├── .gitignore ├── .travis.yml ├── README.md ├── custom-login ├── .gitignore ├── README.md ├── client_secrets.json.dist ├── helpers.py ├── main.py ├── templates │ ├── home.html │ ├── login.html │ ├── profile.html │ └── template.html └── user.py ├── okta-hosted-login ├── .gitignore ├── README.md ├── client_secrets.json.dist ├── helpers.py ├── main.py ├── templates │ ├── home.html │ ├── profile.html │ └── template.html └── user.py ├── package-lock.json ├── package.json ├── requirements.txt ├── resource-server ├── .gitignore ├── README.md ├── client_secrets.json.dist ├── helpers.py └── main.py ├── scripts └── setup-env.js ├── setup.py └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | testenv 2 | node_modules/ 3 | okta-oidc-tck/ 4 | build2/ 5 | yarn-error.log 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "3.7" 4 | 5 | install: 6 | - pip install -U importlib_metadata 7 | - pip install -U -r requirements.txt 8 | 9 | script: "exit 0" 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flask Sample Applications for Okta 2 | This repository contains several sample applications that demonstrate various Okta use-cases in your Flask application. 3 | 4 | > Requires Python version 3.6.0 or higher. 5 | 6 | Please find the sample that fits your use-case from the table below. 7 | 8 | | Sample | Description | 9 | |-----------------------------------------|-------------| 10 | | [Okta-Hosted Login](/okta-hosted-login) | A Flask application that will redirect the user to the Okta-Hosted login page of your Org for authentication. The user is redirected back to the Python application after authenticating. | 11 | | [Custom Login Page](/custom-login) | A Flask application that uses the Okta Sign-In Widget within the Flask application to authenticate the user. | 12 | | [Resource Server](/resource-server) | This is a sample API resource server that shows you how to authenticate requests with access tokens that have been issued by Okta. | 13 | 14 | > ⚠️ Note: These examples require the use of API Access Management. This solution is not included by default for **organizations** (you will have this [error](https://support.okta.com/help/s/article/400-Bad-Request-The-requested-feature-is-not-enabled-in-this-environment?language=en_US)). 15 | -------------------------------------------------------------------------------- /custom-login/.gitignore: -------------------------------------------------------------------------------- 1 | client_secrets.json -------------------------------------------------------------------------------- /custom-login/README.md: -------------------------------------------------------------------------------- 1 | # Flask + Okta Hosted Login Example 2 | 3 | This example shows you how to use Flask to login to your application with a Custom Login page. The login is achieved with the [Okta Sign In Widget][], which gives you more control to customize the login experience within your app. After the user authenticates they are redirected back to the application with an authorization code that is then exchanged for an access token. 4 | 5 | > Requires Python version 3.6.0 or higher. 6 | 7 | ## Prerequisites 8 | 9 | Before running this sample, you will need the following: 10 | 11 | * An Okta Developer Account, you can sign up for one at https://developer.okta.com/signup/. 12 | * An Okta Application, configured for Web mode. This is done from the Okta Developer Console and you can find instructions [here][OIDC WEB Setup Instructions]. When following the wizard, use the default properties. They are are designed to work with our sample applications. 13 | 14 | ## Running This Example 15 | 16 | To run this application, you first need to clone this repo and then enter into this directory: 17 | 18 | ```bash 19 | git clone git@github.com:okta/samples-python-flask.git 20 | cd samples-python-flask 21 | ``` 22 | 23 | Then install dependencies: 24 | 25 | ```bash 26 | pip install -r requirements.txt 27 | ``` 28 | 29 | You also need to gather the following information from the Okta Developer Console: 30 | 31 | - **Client ID** and **Client Secret** - These can be found on the "General" tab of the Web application that you created earlier in the Okta Developer Console. 32 | - **Issuer** - This is the URL of the authorization server that will perform authentication. All Developer Accounts have a "default" authorization server. The issuer is a combination of your Org URL (found in the upper right of the console home page) and `/oauth2/default`. For example, `https://dev-1234.oktapreview.com/oauth2/default`. 33 | 34 | Now that you have the information needed from your organization, open the `okta-hosted-login` directory. Copy the [`client_secrets.json.dist`](client_secrets.json.dist) to `client_secrets.json` and fill in the information you gathered. 35 | 36 | ```json 37 | { 38 | "auth_uri": "https://{yourOktaDomain}/oauth2/default/v1/authorize", 39 | "client_id": "{yourClientId}", 40 | "client_secret": "{yourClientSecret}", 41 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 42 | "issuer": "https://{yourOktaDomain}/oauth2/default", 43 | "token_uri": "https://{yourOktaDomain}/oauth2/default/v1/token", 44 | "token_introspection_uri": "https://{yourOktaDomain}/oauth2/default/v1/introspect", 45 | "userinfo_uri": "https://{yourOktaDomain}/oauth2/default/v1/userinfo" 46 | } 47 | ``` 48 | 49 | Now start the app server: 50 | 51 | ``` 52 | python main.py 53 | ``` 54 | 55 | Now navigate to http://localhost:8080 in your browser. 56 | 57 | If you see a home page that prompts you to login, then things are working! Clicking the **Log in** button will redirect you to the applicaitons custom sign-in page. 58 | 59 | You can login with the same account that you created when signing up for your Developer Org, or you can use a known username and password from your Okta Directory. 60 | 61 | [Okta Sign In Widget]: https://github.com/okta/okta-signin-widget 62 | [OIDC WEB Setup Instructions]: https://developer.okta.com/authentication-guide/implementing-authentication/auth-code#1-setting-up-your-application 63 | -------------------------------------------------------------------------------- /custom-login/client_secrets.json.dist: -------------------------------------------------------------------------------- 1 | { 2 | "auth_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/authorize", 3 | "client_id": "{{CLIENT_ID}}", 4 | "client_secret": "{{CLIENT_SECRET}}", 5 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 6 | "issuer": "https://{{OKTA_DOMAIN}}/oauth2/default", 7 | "token_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/token", 8 | "userinfo_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/userinfo" 9 | } 10 | -------------------------------------------------------------------------------- /custom-login/helpers.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | 4 | from okta_jwt_verifier import AccessTokenVerifier, IDTokenVerifier 5 | 6 | 7 | loop = asyncio.get_event_loop() 8 | 9 | 10 | def is_access_token_valid(token, issuer): 11 | jwt_verifier = AccessTokenVerifier(issuer=issuer, audience='api://default') 12 | try: 13 | loop.run_until_complete(jwt_verifier.verify(token)) 14 | return True 15 | except Exception: 16 | return False 17 | 18 | 19 | def is_id_token_valid(token, issuer, client_id, nonce): 20 | jwt_verifier = IDTokenVerifier(issuer=issuer, client_id=client_id, audience='api://default') 21 | try: 22 | loop.run_until_complete(jwt_verifier.verify(token, nonce=nonce)) 23 | return True 24 | except Exception: 25 | return False 26 | 27 | 28 | def load_config(fname='./client_secrets.json'): 29 | config = None 30 | with open(fname) as f: 31 | config = json.load(f) 32 | return config 33 | 34 | 35 | config = load_config() 36 | -------------------------------------------------------------------------------- /custom-login/main.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import requests 3 | 4 | from flask import Flask, render_template, url_for, redirect, session, json, request 5 | from flask_login import ( 6 | LoginManager, 7 | current_user, 8 | login_required, 9 | login_user, 10 | logout_user, 11 | ) 12 | 13 | from helpers import is_access_token_valid, is_id_token_valid, config 14 | from user import User 15 | 16 | 17 | app = Flask(__name__) 18 | app.config.update({'SECRET_KEY': 'SomethingNotEntirelySecret'}) 19 | 20 | 21 | login_manager = LoginManager() 22 | login_manager.init_app(app) 23 | 24 | 25 | # Parameter state should be something not guessable 26 | APP_STATE = 'ApplicationState+CSRFProtection' 27 | NONCE = 'SampleNonce' 28 | 29 | 30 | @login_manager.user_loader 31 | def load_user(user_id): 32 | return User.get(user_id) 33 | 34 | 35 | @app.route("/") 36 | def home(): 37 | return render_template("home.html") 38 | 39 | 40 | @app.route("/login") 41 | def login(): 42 | bu = config['issuer'].split('/oauth2')[0] 43 | cid = config['client_id'] 44 | 45 | return render_template("login.html", 46 | baseUri=bu, 47 | clientId=cid, 48 | state=APP_STATE, 49 | nonce=NONCE) 50 | 51 | 52 | @app.route("/authorization-code/callback") 53 | def callback(): 54 | if request.args.get("state") != APP_STATE: 55 | return "The state is unexpected.", 403 56 | headers = {'Content-Type': 'application/x-www-form-urlencoded'} 57 | code = request.args.get("code") 58 | if not code: 59 | return "The code was not returned or is not accessible", 403 60 | query_params = {'grant_type': 'authorization_code', 61 | 'code': code, 62 | 'redirect_uri': request.base_url 63 | } 64 | query_params = requests.compat.urlencode(query_params) 65 | exchange = requests.post( 66 | config["token_uri"], 67 | headers=headers, 68 | data=query_params, 69 | auth=(config["client_id"], config["client_secret"]), 70 | ).json() 71 | 72 | # Get tokens and validate 73 | if not exchange.get("token_type"): 74 | return "Unsupported token type. Should be 'Bearer'.", 403 75 | access_token = exchange["access_token"] 76 | id_token = exchange["id_token"] 77 | 78 | if not is_access_token_valid(access_token, config["issuer"]): 79 | return "Access token is invalid", 403 80 | 81 | if not is_id_token_valid(id_token, config["issuer"], config["client_id"], NONCE): 82 | return "ID token is invalid", 403 83 | 84 | # Authorization flow successful, get userinfo and login user 85 | userinfo_response = requests.get(config["userinfo_uri"], 86 | headers={'Authorization': f'Bearer {access_token}'}).json() 87 | 88 | unique_id = userinfo_response["sub"] 89 | user_email = userinfo_response["email"] 90 | user_name = userinfo_response["given_name"] 91 | 92 | user = User( 93 | id_=unique_id, name=user_name, email=user_email 94 | ) 95 | 96 | if not User.get(unique_id): 97 | User.create(unique_id, user_name, user_email) 98 | 99 | login_user(user) 100 | 101 | return redirect(url_for("profile")) 102 | 103 | 104 | @app.route("/profile") 105 | @login_required 106 | def profile(): 107 | return render_template("profile.html", user=current_user) 108 | 109 | 110 | @app.route("/logout", methods=["POST"]) 111 | @login_required 112 | def logout(): 113 | logout_user() 114 | return redirect(url_for("home")) 115 | 116 | 117 | def base64_to_str(data): 118 | return str(base64.b64encode(json.dumps(data).encode('utf-8')), 'utf-8') 119 | 120 | 121 | if __name__ == '__main__': 122 | app.run(host="localhost", port=8080, debug=True) 123 | -------------------------------------------------------------------------------- /custom-login/templates/home.html: -------------------------------------------------------------------------------- 1 | {% extends "template.html" %} 2 | 3 | {% block content %} 4 |

Custom Login + Flask Example

5 | 6 | {% if current_user.is_authenticated %} 7 |
8 |

Welcome back, {{current_user.name}}!

9 |

You have successfully authenticated against your Okta org, and have been redirected back to this application.

10 |

Visit the My Profile page in this application to view the information 11 | retrieved with your OAuth Access Token.

12 |
13 | {% else %} 14 |
15 |

Hello!

16 |

If you're viewing this page then you have successfully configured and started this example server.

17 |

This example shows you how to to add the Authorization Code Flow to your Flask application.

18 |

When you click the login button below, you will be redirected to the login page on your local application.

19 |
20 | 21 |
22 | 23 |
24 | {% endif %} 25 | {% endblock content %} 26 | -------------------------------------------------------------------------------- /custom-login/templates/login.html: -------------------------------------------------------------------------------- 1 | {% extends "template.html" %} 2 | 3 | {% block content %} 4 |
5 | 24 | {% endblock content %} 25 | -------------------------------------------------------------------------------- /custom-login/templates/profile.html: -------------------------------------------------------------------------------- 1 | {% extends "template.html" %} 2 | 3 | {% block content %} 4 |
5 |

My Profile

6 |

Hello, {{ user.email }}. Below is the information that was read with your Access Token. 9 |

10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% for key, claim in user.claims() %} 22 | 23 | 24 | 27 | 28 | {% endfor %} 29 | 30 |
ClaimValue
{{ key }} 25 | {{ claim }} 26 |
31 | {% endblock content %} 32 | -------------------------------------------------------------------------------- /custom-login/templates/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 14 | 16 | 18 | 26 | 27 | 28 | 29 | Okta Hosted Login in Flask 30 | 31 | 32 | 47 | 48 |
49 | {% block content %}{% endblock %} 50 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /custom-login/user.py: -------------------------------------------------------------------------------- 1 | from flask_login import UserMixin 2 | 3 | 4 | # Simulate user database 5 | USERS_DB = {} 6 | 7 | 8 | class User(UserMixin): 9 | 10 | """Custom User class.""" 11 | 12 | def __init__(self, id_, name, email): 13 | self.id = id_ 14 | self.name = name 15 | self.email = email 16 | 17 | def claims(self): 18 | """Use this method to render all assigned claims on profile page.""" 19 | return {'name': self.name, 20 | 'email': self.email}.items() 21 | 22 | @staticmethod 23 | def get(user_id): 24 | return USERS_DB.get(user_id) 25 | 26 | @staticmethod 27 | def create(user_id, name, email): 28 | USERS_DB[user_id] = User(user_id, name, email) 29 | -------------------------------------------------------------------------------- /okta-hosted-login/.gitignore: -------------------------------------------------------------------------------- 1 | client_secrets.json -------------------------------------------------------------------------------- /okta-hosted-login/README.md: -------------------------------------------------------------------------------- 1 | # Flask + Okta Hosted Login Example 2 | 3 | This example shows you how to use Flask to log in to your application with an Okta Hosted Login page. The login is achieved through the [authorization code flow](https://developer.okta.com/authentication-guide/implementing-authentication/auth-code), where the user is redirected to the Okta-Hosted login page. After the user authenticates, they are redirected back to the application with an access code that is then exchanged for an access token. 4 | 5 | > Requires Python version 3.6.0 or higher. 6 | 7 | ## Prerequisites 8 | 9 | Before running this sample, you will need the following: 10 | 11 | * An Okta Developer Account, you can sign up for one at https://developer.okta.com/signup/. 12 | * An Okta Application configured for Web mode. You can create one from the Okta Developer Console, and you can find instructions [here][OIDC WEB Setup Instructions]. When following the wizard, use the default properties. They are designed to work with our sample applications. 13 | 14 | ## Running This Example 15 | 16 | To run this application, you first need to clone this repo: 17 | 18 | ```bash 19 | git clone git@github.com:okta/samples-python-flask.git 20 | cd samples-python-flask 21 | ``` 22 | 23 | Then install dependencies: 24 | 25 | ```bash 26 | pip install -r requirements.txt 27 | ``` 28 | 29 | Open the `okta-hosted-login` directory and copy the [`client_secrets.json.dist`](client_secrets.json.dist) to `client_secrets.json`: 30 | 31 | ```bash 32 | cd okta-hosted-login 33 | cp client_secrets.json.dist client_secrets.json 34 | ``` 35 | 36 | You now need to gather the following information from the Okta Developer Console: 37 | 38 | - **Client ID** and **Client Secret** - These can be found on the "General" tab of the Web application that you created earlier in the Okta Developer Console. 39 | - **Issuer** - This is the URL of the authorization server that will perform authentication. All Developer Accounts have a "default" authorization server. The issuer is a combination of your Org URL (found in the upper right of the console home page) and `/oauth2/default`. For example, `https://dev-1234.oktapreview.com/oauth2/default`. 40 | 41 | Fill in the information that you gathered in the `client_secrets.json` file. 42 | 43 | ```json 44 | { 45 | "auth_uri": "https://{yourOktaDomain}/oauth2/default/v1/authorize", 46 | "client_id": "{yourClientId}", 47 | "client_secret": "{yourClientSecret}", 48 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 49 | "issuer": "https://{yourOktaDomain}/oauth2/default", 50 | "token_uri": "https://{yourOktaDomain}/oauth2/default/v1/token", 51 | "token_introspection_uri": "https://{yourOktaDomain}/oauth2/default/v1/introspect", 52 | "userinfo_uri": "https://{yourOktaDomain}/oauth2/default/v1/userinfo" 53 | } 54 | ``` 55 | 56 | Start the app server: 57 | 58 | ``` 59 | python main.py 60 | ``` 61 | 62 | Now navigate to http://localhost:8080 in your browser. 63 | 64 | If you see a home page that prompts you to log in, then things are working! Clicking the **Log in** button will redirect you to the Okta hosted sign-in page. 65 | 66 | You can log in with the same account that you created when signing up for your Developer Org. You can also use a known username and password from your Okta Directory. 67 | 68 | **Note:** If you are currently using your Developer Console, you already have a Single Sign-On (SSO) session for your Org. You will be automatically logged into your application as the same user that is using the Developer Console. You may want to use an incognito tab to test the flow from a blank slate. 69 | 70 | [OIDC Web Setup Instructions]: https://developer.okta.com/authentication-guide/implementing-authentication/auth-code#1-setting-up-your-application 71 | -------------------------------------------------------------------------------- /okta-hosted-login/client_secrets.json.dist: -------------------------------------------------------------------------------- 1 | { 2 | "auth_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/authorize", 3 | "client_id": "{{CLIENT_ID}}", 4 | "client_secret": "{{CLIENT_SECRET}}", 5 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 6 | "issuer": "https://{{OKTA_DOMAIN}}/oauth2/default", 7 | "token_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/token", 8 | "userinfo_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/userinfo" 9 | } 10 | -------------------------------------------------------------------------------- /okta-hosted-login/helpers.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | 4 | from okta_jwt_verifier import AccessTokenVerifier, IDTokenVerifier 5 | 6 | 7 | loop = asyncio.get_event_loop() 8 | 9 | 10 | def is_access_token_valid(token, issuer): 11 | jwt_verifier = AccessTokenVerifier(issuer=issuer, audience='api://default') 12 | try: 13 | loop.run_until_complete(jwt_verifier.verify(token)) 14 | return True 15 | except Exception: 16 | return False 17 | 18 | 19 | def is_id_token_valid(token, issuer, client_id, nonce): 20 | jwt_verifier = IDTokenVerifier(issuer=issuer, client_id=client_id, audience='api://default') 21 | try: 22 | loop.run_until_complete(jwt_verifier.verify(token, nonce=nonce)) 23 | return True 24 | except Exception: 25 | return False 26 | 27 | 28 | def load_config(fname='./client_secrets.json'): 29 | config = None 30 | with open(fname) as f: 31 | config = json.load(f) 32 | return config 33 | 34 | 35 | config = load_config() 36 | -------------------------------------------------------------------------------- /okta-hosted-login/main.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | from flask import Flask, render_template, redirect, request, url_for 4 | from flask_login import ( 5 | LoginManager, 6 | current_user, 7 | login_required, 8 | login_user, 9 | logout_user, 10 | ) 11 | 12 | from helpers import is_access_token_valid, is_id_token_valid, config 13 | from user import User 14 | 15 | 16 | app = Flask(__name__) 17 | app.config.update({'SECRET_KEY': ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + string.digits, k=32))}) 18 | 19 | login_manager = LoginManager() 20 | login_manager.init_app(app) 21 | 22 | 23 | APP_STATE = 'ApplicationState' 24 | NONCE = 'SampleNonce' 25 | 26 | 27 | @login_manager.user_loader 28 | def load_user(user_id): 29 | return User.get(user_id) 30 | 31 | 32 | @app.route("/") 33 | def home(): 34 | return render_template("home.html") 35 | 36 | 37 | @app.route("/login") 38 | def login(): 39 | # get request params 40 | query_params = {'client_id': config["client_id"], 41 | 'redirect_uri': config["redirect_uri"], 42 | 'scope': "openid email profile", 43 | 'state': APP_STATE, 44 | 'nonce': NONCE, 45 | 'response_type': 'code', 46 | 'response_mode': 'query'} 47 | 48 | # build request_uri 49 | request_uri = "{base_url}?{query_params}".format( 50 | base_url=config["auth_uri"], 51 | query_params=requests.compat.urlencode(query_params) 52 | ) 53 | 54 | return redirect(request_uri) 55 | 56 | 57 | @app.route("/profile") 58 | @login_required 59 | def profile(): 60 | return render_template("profile.html", user=current_user) 61 | 62 | 63 | @app.route("/authorization-code/callback") 64 | def callback(): 65 | headers = {'Content-Type': 'application/x-www-form-urlencoded'} 66 | code = request.args.get("code") 67 | if not code: 68 | return "The code was not returned or is not accessible", 403 69 | query_params = {'grant_type': 'authorization_code', 70 | 'code': code, 71 | 'redirect_uri': request.base_url 72 | } 73 | query_params = requests.compat.urlencode(query_params) 74 | exchange = requests.post( 75 | config["token_uri"], 76 | headers=headers, 77 | data=query_params, 78 | auth=(config["client_id"], config["client_secret"]), 79 | ).json() 80 | 81 | # Get tokens and validate 82 | if not exchange.get("token_type"): 83 | return "Unsupported token type. Should be 'Bearer'.", 403 84 | access_token = exchange["access_token"] 85 | id_token = exchange["id_token"] 86 | 87 | if not is_access_token_valid(access_token, config["issuer"]): 88 | return "Access token is invalid", 403 89 | 90 | if not is_id_token_valid(id_token, config["issuer"], config["client_id"], NONCE): 91 | return "ID token is invalid", 403 92 | 93 | # Authorization flow successful, get userinfo and login user 94 | userinfo_response = requests.get(config["userinfo_uri"], 95 | headers={'Authorization': f'Bearer {access_token}'}).json() 96 | 97 | unique_id = userinfo_response["sub"] 98 | user_email = userinfo_response["email"] 99 | user_name = userinfo_response["given_name"] 100 | 101 | user = User( 102 | id_=unique_id, name=user_name, email=user_email 103 | ) 104 | 105 | if not User.get(unique_id): 106 | User.create(unique_id, user_name, user_email) 107 | 108 | login_user(user) 109 | 110 | return redirect(url_for("profile")) 111 | 112 | 113 | @app.route("/logout", methods=["GET", "POST"]) 114 | @login_required 115 | def logout(): 116 | logout_user() 117 | return redirect(url_for("home")) 118 | 119 | 120 | if __name__ == '__main__': 121 | app.run(host="localhost", port=8080, debug=True) 122 | -------------------------------------------------------------------------------- /okta-hosted-login/templates/home.html: -------------------------------------------------------------------------------- 1 | {% extends "template.html" %} 2 | 3 | {% block content %} 4 |

Okta Hosted Login + Flask Example

5 | 6 | {% if current_user.is_authenticated %} 7 |
8 |

Welcome back, !

9 |

You have successfully authenticated against your Okta org, and have been redirected back to this application.

10 |

Visit the My Profile page in this application to view the information 11 | retrieved with your OAuth Access Token.

12 |
13 | {% else %} 14 |
15 |

Hello!

16 |

If you're viewing this page then you have successfully configured and started this example server.

17 |

This example shows you how to to add the Authorization Code Flow to your Flask application.

18 |

When you click the login button below, you will be redirected to the login page on your Okta org. After you authenticate, you will be returned to this application.

19 |
20 | 21 |
22 | 23 |
24 | {% endif %} 25 | {% endblock content %} 26 | -------------------------------------------------------------------------------- /okta-hosted-login/templates/profile.html: -------------------------------------------------------------------------------- 1 | {% extends "template.html" %} 2 | 3 | {% block content %} 4 |
5 |

My Profile

6 |

Hello, {{ user.email }}. Below is the information that was read with your Access Token. 9 |

10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% for key, claim in user.claims() %} 22 | 23 | 24 | 27 | 28 | {% endfor %} 29 | 30 |
ClaimValue
{{ key }} 25 | {{ claim }} 26 |
31 | {% endblock content %} 32 | -------------------------------------------------------------------------------- /okta-hosted-login/templates/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | Okta Hosted Login in Flask 15 | 16 | 17 | 32 | 33 |
34 | {% block content %}{% endblock %} 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /okta-hosted-login/user.py: -------------------------------------------------------------------------------- 1 | from flask_login import UserMixin 2 | 3 | 4 | # Simulate user database 5 | USERS_DB = {} 6 | 7 | 8 | class User(UserMixin): 9 | 10 | """Custom User class.""" 11 | 12 | def __init__(self, id_, name, email): 13 | self.id = id_ 14 | self.name = name 15 | self.email = email 16 | 17 | def claims(self): 18 | """Use this method to render all assigned claims on profile page.""" 19 | return {'name': self.name, 20 | 'email': self.email}.items() 21 | 22 | @staticmethod 23 | def get(user_id): 24 | return USERS_DB.get(user_id) 25 | 26 | @staticmethod 27 | def create(user_id, name, email): 28 | USERS_DB[user_id] = User(user_id, name, email) 29 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@okta/samples-python-flask", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@okta/samples-python-flask", 9 | "version": "0.1.0", 10 | "license": "Apache-2.0", 11 | "devDependencies": { 12 | "dotenv": "^5.0.1", 13 | "find-process": "^1.1.0", 14 | "forever-monitor": "npm:@umpacken/forever-monitor@^1.6.1", 15 | "jasmine": "^3.0.0", 16 | "jasmine-reporters": "^2.5", 17 | "node-cmd": "^3.0.0", 18 | "platform": "^1.3.5", 19 | "protractor": "^7.0.0", 20 | "wait-on": "^5.3.0" 21 | } 22 | }, 23 | "node_modules/@hapi/hoek": { 24 | "version": "9.3.0", 25 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", 26 | "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", 27 | "dev": true 28 | }, 29 | "node_modules/@hapi/topo": { 30 | "version": "5.1.0", 31 | "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", 32 | "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", 33 | "dev": true, 34 | "dependencies": { 35 | "@hapi/hoek": "^9.0.0" 36 | } 37 | }, 38 | "node_modules/@sideway/address": { 39 | "version": "4.1.4", 40 | "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", 41 | "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", 42 | "dev": true, 43 | "dependencies": { 44 | "@hapi/hoek": "^9.0.0" 45 | } 46 | }, 47 | "node_modules/@sideway/formula": { 48 | "version": "3.0.1", 49 | "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", 50 | "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", 51 | "dev": true 52 | }, 53 | "node_modules/@sideway/pinpoint": { 54 | "version": "2.0.0", 55 | "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", 56 | "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", 57 | "dev": true 58 | }, 59 | "node_modules/@types/q": { 60 | "version": "0.0.32", 61 | "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", 62 | "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", 63 | "dev": true 64 | }, 65 | "node_modules/@types/selenium-webdriver": { 66 | "version": "3.0.20", 67 | "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz", 68 | "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==", 69 | "dev": true 70 | }, 71 | "node_modules/@xmldom/xmldom": { 72 | "version": "0.8.6", 73 | "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.6.tgz", 74 | "integrity": "sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==", 75 | "dev": true, 76 | "engines": { 77 | "node": ">=10.0.0" 78 | } 79 | }, 80 | "node_modules/adm-zip": { 81 | "version": "0.5.10", 82 | "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", 83 | "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", 84 | "dev": true, 85 | "engines": { 86 | "node": ">=6.0" 87 | } 88 | }, 89 | "node_modules/agent-base": { 90 | "version": "4.3.0", 91 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 92 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 93 | "dev": true, 94 | "dependencies": { 95 | "es6-promisify": "^5.0.0" 96 | }, 97 | "engines": { 98 | "node": ">= 4.0.0" 99 | } 100 | }, 101 | "node_modules/ajv": { 102 | "version": "6.12.6", 103 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 104 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 105 | "dev": true, 106 | "dependencies": { 107 | "fast-deep-equal": "^3.1.1", 108 | "fast-json-stable-stringify": "^2.0.0", 109 | "json-schema-traverse": "^0.4.1", 110 | "uri-js": "^4.2.2" 111 | }, 112 | "funding": { 113 | "type": "github", 114 | "url": "https://github.com/sponsors/epoberezkin" 115 | } 116 | }, 117 | "node_modules/ansi-regex": { 118 | "version": "5.0.1", 119 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 120 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 121 | "dev": true, 122 | "engines": { 123 | "node": ">=8" 124 | } 125 | }, 126 | "node_modules/ansi-styles": { 127 | "version": "4.3.0", 128 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 129 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 130 | "dev": true, 131 | "dependencies": { 132 | "color-convert": "^2.0.1" 133 | }, 134 | "engines": { 135 | "node": ">=8" 136 | }, 137 | "funding": { 138 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 139 | } 140 | }, 141 | "node_modules/anymatch": { 142 | "version": "3.1.3", 143 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 144 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 145 | "dev": true, 146 | "dependencies": { 147 | "normalize-path": "^3.0.0", 148 | "picomatch": "^2.0.4" 149 | }, 150 | "engines": { 151 | "node": ">= 8" 152 | } 153 | }, 154 | "node_modules/array-union": { 155 | "version": "1.0.2", 156 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 157 | "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", 158 | "dev": true, 159 | "dependencies": { 160 | "array-uniq": "^1.0.1" 161 | }, 162 | "engines": { 163 | "node": ">=0.10.0" 164 | } 165 | }, 166 | "node_modules/array-uniq": { 167 | "version": "1.0.3", 168 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 169 | "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", 170 | "dev": true, 171 | "engines": { 172 | "node": ">=0.10.0" 173 | } 174 | }, 175 | "node_modules/arrify": { 176 | "version": "1.0.1", 177 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 178 | "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", 179 | "dev": true, 180 | "engines": { 181 | "node": ">=0.10.0" 182 | } 183 | }, 184 | "node_modules/asn1": { 185 | "version": "0.2.6", 186 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 187 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 188 | "dev": true, 189 | "dependencies": { 190 | "safer-buffer": "~2.1.0" 191 | } 192 | }, 193 | "node_modules/assert-plus": { 194 | "version": "1.0.0", 195 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 196 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 197 | "dev": true, 198 | "engines": { 199 | "node": ">=0.8" 200 | } 201 | }, 202 | "node_modules/async": { 203 | "version": "3.2.4", 204 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", 205 | "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", 206 | "dev": true 207 | }, 208 | "node_modules/asynckit": { 209 | "version": "0.4.0", 210 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 211 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 212 | "dev": true 213 | }, 214 | "node_modules/aws-sign2": { 215 | "version": "0.7.0", 216 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 217 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 218 | "dev": true, 219 | "engines": { 220 | "node": "*" 221 | } 222 | }, 223 | "node_modules/aws4": { 224 | "version": "1.12.0", 225 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", 226 | "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", 227 | "dev": true 228 | }, 229 | "node_modules/axios": { 230 | "version": "0.21.4", 231 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", 232 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", 233 | "dev": true, 234 | "dependencies": { 235 | "follow-redirects": "^1.14.0" 236 | } 237 | }, 238 | "node_modules/balanced-match": { 239 | "version": "1.0.2", 240 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 241 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 242 | "dev": true 243 | }, 244 | "node_modules/bcrypt-pbkdf": { 245 | "version": "1.0.2", 246 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 247 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 248 | "dev": true, 249 | "dependencies": { 250 | "tweetnacl": "^0.14.3" 251 | } 252 | }, 253 | "node_modules/binary-extensions": { 254 | "version": "2.2.0", 255 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 256 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 257 | "dev": true, 258 | "engines": { 259 | "node": ">=8" 260 | } 261 | }, 262 | "node_modules/blocking-proxy": { 263 | "version": "1.0.1", 264 | "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", 265 | "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", 266 | "dev": true, 267 | "dependencies": { 268 | "minimist": "^1.2.0" 269 | }, 270 | "bin": { 271 | "blocking-proxy": "built/lib/bin.js" 272 | }, 273 | "engines": { 274 | "node": ">=6.9.x" 275 | } 276 | }, 277 | "node_modules/brace-expansion": { 278 | "version": "1.1.11", 279 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 280 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 281 | "dev": true, 282 | "dependencies": { 283 | "balanced-match": "^1.0.0", 284 | "concat-map": "0.0.1" 285 | } 286 | }, 287 | "node_modules/braces": { 288 | "version": "3.0.2", 289 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 290 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 291 | "dev": true, 292 | "dependencies": { 293 | "fill-range": "^7.0.1" 294 | }, 295 | "engines": { 296 | "node": ">=8" 297 | } 298 | }, 299 | "node_modules/browserstack": { 300 | "version": "1.6.1", 301 | "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", 302 | "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", 303 | "dev": true, 304 | "dependencies": { 305 | "https-proxy-agent": "^2.2.1" 306 | } 307 | }, 308 | "node_modules/camelcase": { 309 | "version": "5.3.1", 310 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 311 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 312 | "dev": true, 313 | "engines": { 314 | "node": ">=6" 315 | } 316 | }, 317 | "node_modules/caseless": { 318 | "version": "0.12.0", 319 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 320 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", 321 | "dev": true 322 | }, 323 | "node_modules/chalk": { 324 | "version": "4.1.2", 325 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 326 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 327 | "dev": true, 328 | "dependencies": { 329 | "ansi-styles": "^4.1.0", 330 | "supports-color": "^7.1.0" 331 | }, 332 | "engines": { 333 | "node": ">=10" 334 | }, 335 | "funding": { 336 | "url": "https://github.com/chalk/chalk?sponsor=1" 337 | } 338 | }, 339 | "node_modules/chokidar": { 340 | "version": "3.5.3", 341 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 342 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 343 | "dev": true, 344 | "funding": [ 345 | { 346 | "type": "individual", 347 | "url": "https://paulmillr.com/funding/" 348 | } 349 | ], 350 | "dependencies": { 351 | "anymatch": "~3.1.2", 352 | "braces": "~3.0.2", 353 | "glob-parent": "~5.1.2", 354 | "is-binary-path": "~2.1.0", 355 | "is-glob": "~4.0.1", 356 | "normalize-path": "~3.0.0", 357 | "readdirp": "~3.6.0" 358 | }, 359 | "engines": { 360 | "node": ">= 8.10.0" 361 | }, 362 | "optionalDependencies": { 363 | "fsevents": "~2.3.2" 364 | } 365 | }, 366 | "node_modules/cliui": { 367 | "version": "6.0.0", 368 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 369 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 370 | "dev": true, 371 | "dependencies": { 372 | "string-width": "^4.2.0", 373 | "strip-ansi": "^6.0.0", 374 | "wrap-ansi": "^6.2.0" 375 | } 376 | }, 377 | "node_modules/color-convert": { 378 | "version": "2.0.1", 379 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 380 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 381 | "dev": true, 382 | "dependencies": { 383 | "color-name": "~1.1.4" 384 | }, 385 | "engines": { 386 | "node": ">=7.0.0" 387 | } 388 | }, 389 | "node_modules/color-name": { 390 | "version": "1.1.4", 391 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 392 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 393 | "dev": true 394 | }, 395 | "node_modules/combined-stream": { 396 | "version": "1.0.8", 397 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 398 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 399 | "dev": true, 400 | "dependencies": { 401 | "delayed-stream": "~1.0.0" 402 | }, 403 | "engines": { 404 | "node": ">= 0.8" 405 | } 406 | }, 407 | "node_modules/commander": { 408 | "version": "5.1.0", 409 | "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 410 | "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", 411 | "dev": true, 412 | "engines": { 413 | "node": ">= 6" 414 | } 415 | }, 416 | "node_modules/concat-map": { 417 | "version": "0.0.1", 418 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 419 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 420 | "dev": true 421 | }, 422 | "node_modules/core-util-is": { 423 | "version": "1.0.3", 424 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 425 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 426 | "dev": true 427 | }, 428 | "node_modules/dashdash": { 429 | "version": "1.14.1", 430 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 431 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 432 | "dev": true, 433 | "dependencies": { 434 | "assert-plus": "^1.0.0" 435 | }, 436 | "engines": { 437 | "node": ">=0.10" 438 | } 439 | }, 440 | "node_modules/debug": { 441 | "version": "4.3.4", 442 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 443 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 444 | "dev": true, 445 | "dependencies": { 446 | "ms": "2.1.2" 447 | }, 448 | "engines": { 449 | "node": ">=6.0" 450 | }, 451 | "peerDependenciesMeta": { 452 | "supports-color": { 453 | "optional": true 454 | } 455 | } 456 | }, 457 | "node_modules/decamelize": { 458 | "version": "1.2.0", 459 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 460 | "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", 461 | "dev": true, 462 | "engines": { 463 | "node": ">=0.10.0" 464 | } 465 | }, 466 | "node_modules/del": { 467 | "version": "2.2.2", 468 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 469 | "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", 470 | "dev": true, 471 | "dependencies": { 472 | "globby": "^5.0.0", 473 | "is-path-cwd": "^1.0.0", 474 | "is-path-in-cwd": "^1.0.0", 475 | "object-assign": "^4.0.1", 476 | "pify": "^2.0.0", 477 | "pinkie-promise": "^2.0.0", 478 | "rimraf": "^2.2.8" 479 | }, 480 | "engines": { 481 | "node": ">=0.10.0" 482 | } 483 | }, 484 | "node_modules/delayed-stream": { 485 | "version": "1.0.0", 486 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 487 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 488 | "dev": true, 489 | "engines": { 490 | "node": ">=0.4.0" 491 | } 492 | }, 493 | "node_modules/dotenv": { 494 | "version": "5.0.1", 495 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", 496 | "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", 497 | "dev": true, 498 | "engines": { 499 | "node": ">=4.6.0" 500 | } 501 | }, 502 | "node_modules/duplexer": { 503 | "version": "0.1.2", 504 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", 505 | "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", 506 | "dev": true 507 | }, 508 | "node_modules/ecc-jsbn": { 509 | "version": "0.1.2", 510 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 511 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 512 | "dev": true, 513 | "dependencies": { 514 | "jsbn": "~0.1.0", 515 | "safer-buffer": "^2.1.0" 516 | } 517 | }, 518 | "node_modules/emoji-regex": { 519 | "version": "8.0.0", 520 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 521 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 522 | "dev": true 523 | }, 524 | "node_modules/es6-promise": { 525 | "version": "4.2.8", 526 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 527 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 528 | "dev": true 529 | }, 530 | "node_modules/es6-promisify": { 531 | "version": "5.0.0", 532 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 533 | "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", 534 | "dev": true, 535 | "dependencies": { 536 | "es6-promise": "^4.0.3" 537 | } 538 | }, 539 | "node_modules/escape-string-regexp": { 540 | "version": "1.0.5", 541 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 542 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 543 | "dev": true, 544 | "engines": { 545 | "node": ">=0.8.0" 546 | } 547 | }, 548 | "node_modules/event-stream": { 549 | "version": "3.3.4", 550 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 551 | "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", 552 | "dev": true, 553 | "dependencies": { 554 | "duplexer": "~0.1.1", 555 | "from": "~0", 556 | "map-stream": "~0.1.0", 557 | "pause-stream": "0.0.11", 558 | "split": "0.3", 559 | "stream-combiner": "~0.0.4", 560 | "through": "~2.3.1" 561 | } 562 | }, 563 | "node_modules/eventemitter2": { 564 | "version": "6.4.9", 565 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", 566 | "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", 567 | "dev": true 568 | }, 569 | "node_modules/exit": { 570 | "version": "0.1.2", 571 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 572 | "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", 573 | "dev": true, 574 | "engines": { 575 | "node": ">= 0.8.0" 576 | } 577 | }, 578 | "node_modules/extend": { 579 | "version": "3.0.2", 580 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 581 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 582 | "dev": true 583 | }, 584 | "node_modules/extsprintf": { 585 | "version": "1.3.0", 586 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 587 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 588 | "dev": true, 589 | "engines": [ 590 | "node >=0.6.0" 591 | ] 592 | }, 593 | "node_modules/fast-deep-equal": { 594 | "version": "3.1.3", 595 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 596 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 597 | "dev": true 598 | }, 599 | "node_modules/fast-json-stable-stringify": { 600 | "version": "2.1.0", 601 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 602 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 603 | "dev": true 604 | }, 605 | "node_modules/fill-range": { 606 | "version": "7.0.1", 607 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 608 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 609 | "dev": true, 610 | "dependencies": { 611 | "to-regex-range": "^5.0.1" 612 | }, 613 | "engines": { 614 | "node": ">=8" 615 | } 616 | }, 617 | "node_modules/find-process": { 618 | "version": "1.4.7", 619 | "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", 620 | "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", 621 | "dev": true, 622 | "dependencies": { 623 | "chalk": "^4.0.0", 624 | "commander": "^5.1.0", 625 | "debug": "^4.1.1" 626 | }, 627 | "bin": { 628 | "find-process": "bin/find-process.js" 629 | } 630 | }, 631 | "node_modules/find-up": { 632 | "version": "4.1.0", 633 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 634 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 635 | "dev": true, 636 | "dependencies": { 637 | "locate-path": "^5.0.0", 638 | "path-exists": "^4.0.0" 639 | }, 640 | "engines": { 641 | "node": ">=8" 642 | } 643 | }, 644 | "node_modules/follow-redirects": { 645 | "version": "1.15.2", 646 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 647 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 648 | "dev": true, 649 | "funding": [ 650 | { 651 | "type": "individual", 652 | "url": "https://github.com/sponsors/RubenVerborgh" 653 | } 654 | ], 655 | "engines": { 656 | "node": ">=4.0" 657 | }, 658 | "peerDependenciesMeta": { 659 | "debug": { 660 | "optional": true 661 | } 662 | } 663 | }, 664 | "node_modules/forever-agent": { 665 | "version": "0.6.1", 666 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 667 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 668 | "dev": true, 669 | "engines": { 670 | "node": "*" 671 | } 672 | }, 673 | "node_modules/forever-monitor": { 674 | "name": "@umpacken/forever-monitor", 675 | "version": "1.6.1", 676 | "resolved": "https://registry.npmjs.org/@umpacken/forever-monitor/-/forever-monitor-1.6.1.tgz", 677 | "integrity": "sha512-xm5q3/1VnqWKEbzSh7HtQhJXWPkUB2Z+8kBdGwP7XipQCehHTAZhVrokfDwN0Sz7lyTeyBSEvc227L5SNQdSOg==", 678 | "dev": true, 679 | "dependencies": { 680 | "async": "^3.0.0", 681 | "chokidar": "^3.0.0", 682 | "eventemitter2": "^6.4.3", 683 | "minimatch": "^3.0.4", 684 | "ps-tree": "^1.2.0" 685 | }, 686 | "engines": { 687 | "node": ">=6" 688 | } 689 | }, 690 | "node_modules/form-data": { 691 | "version": "2.3.3", 692 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 693 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 694 | "dev": true, 695 | "dependencies": { 696 | "asynckit": "^0.4.0", 697 | "combined-stream": "^1.0.6", 698 | "mime-types": "^2.1.12" 699 | }, 700 | "engines": { 701 | "node": ">= 0.12" 702 | } 703 | }, 704 | "node_modules/from": { 705 | "version": "0.1.7", 706 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 707 | "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", 708 | "dev": true 709 | }, 710 | "node_modules/fs.realpath": { 711 | "version": "1.0.0", 712 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 713 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 714 | "dev": true 715 | }, 716 | "node_modules/fsevents": { 717 | "version": "2.3.2", 718 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 719 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 720 | "dev": true, 721 | "hasInstallScript": true, 722 | "optional": true, 723 | "os": [ 724 | "darwin" 725 | ], 726 | "engines": { 727 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 728 | } 729 | }, 730 | "node_modules/get-caller-file": { 731 | "version": "2.0.5", 732 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 733 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 734 | "dev": true, 735 | "engines": { 736 | "node": "6.* || 8.* || >= 10.*" 737 | } 738 | }, 739 | "node_modules/getpass": { 740 | "version": "0.1.7", 741 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 742 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 743 | "dev": true, 744 | "dependencies": { 745 | "assert-plus": "^1.0.0" 746 | } 747 | }, 748 | "node_modules/glob": { 749 | "version": "7.2.3", 750 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 751 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 752 | "dev": true, 753 | "dependencies": { 754 | "fs.realpath": "^1.0.0", 755 | "inflight": "^1.0.4", 756 | "inherits": "2", 757 | "minimatch": "^3.1.1", 758 | "once": "^1.3.0", 759 | "path-is-absolute": "^1.0.0" 760 | }, 761 | "engines": { 762 | "node": "*" 763 | }, 764 | "funding": { 765 | "url": "https://github.com/sponsors/isaacs" 766 | } 767 | }, 768 | "node_modules/glob-parent": { 769 | "version": "5.1.2", 770 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 771 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 772 | "dev": true, 773 | "dependencies": { 774 | "is-glob": "^4.0.1" 775 | }, 776 | "engines": { 777 | "node": ">= 6" 778 | } 779 | }, 780 | "node_modules/globby": { 781 | "version": "5.0.0", 782 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 783 | "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", 784 | "dev": true, 785 | "dependencies": { 786 | "array-union": "^1.0.1", 787 | "arrify": "^1.0.0", 788 | "glob": "^7.0.3", 789 | "object-assign": "^4.0.1", 790 | "pify": "^2.0.0", 791 | "pinkie-promise": "^2.0.0" 792 | }, 793 | "engines": { 794 | "node": ">=0.10.0" 795 | } 796 | }, 797 | "node_modules/har-schema": { 798 | "version": "2.0.0", 799 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 800 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 801 | "dev": true, 802 | "engines": { 803 | "node": ">=4" 804 | } 805 | }, 806 | "node_modules/har-validator": { 807 | "version": "5.1.5", 808 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 809 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 810 | "deprecated": "this library is no longer supported", 811 | "dev": true, 812 | "dependencies": { 813 | "ajv": "^6.12.3", 814 | "har-schema": "^2.0.0" 815 | }, 816 | "engines": { 817 | "node": ">=6" 818 | } 819 | }, 820 | "node_modules/has-ansi": { 821 | "version": "2.0.0", 822 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 823 | "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 824 | "dev": true, 825 | "dependencies": { 826 | "ansi-regex": "^2.0.0" 827 | }, 828 | "engines": { 829 | "node": ">=0.10.0" 830 | } 831 | }, 832 | "node_modules/has-ansi/node_modules/ansi-regex": { 833 | "version": "2.1.1", 834 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 835 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 836 | "dev": true, 837 | "engines": { 838 | "node": ">=0.10.0" 839 | } 840 | }, 841 | "node_modules/has-flag": { 842 | "version": "4.0.0", 843 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 844 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 845 | "dev": true, 846 | "engines": { 847 | "node": ">=8" 848 | } 849 | }, 850 | "node_modules/http-signature": { 851 | "version": "1.2.0", 852 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 853 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 854 | "dev": true, 855 | "dependencies": { 856 | "assert-plus": "^1.0.0", 857 | "jsprim": "^1.2.2", 858 | "sshpk": "^1.7.0" 859 | }, 860 | "engines": { 861 | "node": ">=0.8", 862 | "npm": ">=1.3.7" 863 | } 864 | }, 865 | "node_modules/https-proxy-agent": { 866 | "version": "2.2.4", 867 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 868 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 869 | "dev": true, 870 | "dependencies": { 871 | "agent-base": "^4.3.0", 872 | "debug": "^3.1.0" 873 | }, 874 | "engines": { 875 | "node": ">= 4.5.0" 876 | } 877 | }, 878 | "node_modules/https-proxy-agent/node_modules/debug": { 879 | "version": "3.2.7", 880 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 881 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 882 | "dev": true, 883 | "dependencies": { 884 | "ms": "^2.1.1" 885 | } 886 | }, 887 | "node_modules/immediate": { 888 | "version": "3.0.6", 889 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 890 | "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", 891 | "dev": true 892 | }, 893 | "node_modules/inflight": { 894 | "version": "1.0.6", 895 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 896 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 897 | "dev": true, 898 | "dependencies": { 899 | "once": "^1.3.0", 900 | "wrappy": "1" 901 | } 902 | }, 903 | "node_modules/inherits": { 904 | "version": "2.0.4", 905 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 906 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 907 | "dev": true 908 | }, 909 | "node_modules/ini": { 910 | "version": "1.3.8", 911 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 912 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 913 | "dev": true 914 | }, 915 | "node_modules/is-binary-path": { 916 | "version": "2.1.0", 917 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 918 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 919 | "dev": true, 920 | "dependencies": { 921 | "binary-extensions": "^2.0.0" 922 | }, 923 | "engines": { 924 | "node": ">=8" 925 | } 926 | }, 927 | "node_modules/is-extglob": { 928 | "version": "2.1.1", 929 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 930 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 931 | "dev": true, 932 | "engines": { 933 | "node": ">=0.10.0" 934 | } 935 | }, 936 | "node_modules/is-fullwidth-code-point": { 937 | "version": "3.0.0", 938 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 939 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 940 | "dev": true, 941 | "engines": { 942 | "node": ">=8" 943 | } 944 | }, 945 | "node_modules/is-glob": { 946 | "version": "4.0.3", 947 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 948 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 949 | "dev": true, 950 | "dependencies": { 951 | "is-extglob": "^2.1.1" 952 | }, 953 | "engines": { 954 | "node": ">=0.10.0" 955 | } 956 | }, 957 | "node_modules/is-number": { 958 | "version": "7.0.0", 959 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 960 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 961 | "dev": true, 962 | "engines": { 963 | "node": ">=0.12.0" 964 | } 965 | }, 966 | "node_modules/is-path-cwd": { 967 | "version": "1.0.0", 968 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 969 | "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", 970 | "dev": true, 971 | "engines": { 972 | "node": ">=0.10.0" 973 | } 974 | }, 975 | "node_modules/is-path-in-cwd": { 976 | "version": "1.0.1", 977 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", 978 | "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", 979 | "dev": true, 980 | "dependencies": { 981 | "is-path-inside": "^1.0.0" 982 | }, 983 | "engines": { 984 | "node": ">=0.10.0" 985 | } 986 | }, 987 | "node_modules/is-path-inside": { 988 | "version": "1.0.1", 989 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 990 | "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", 991 | "dev": true, 992 | "dependencies": { 993 | "path-is-inside": "^1.0.1" 994 | }, 995 | "engines": { 996 | "node": ">=0.10.0" 997 | } 998 | }, 999 | "node_modules/is-typedarray": { 1000 | "version": "1.0.0", 1001 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1002 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 1003 | "dev": true 1004 | }, 1005 | "node_modules/isarray": { 1006 | "version": "1.0.0", 1007 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1008 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1009 | "dev": true 1010 | }, 1011 | "node_modules/isstream": { 1012 | "version": "0.1.2", 1013 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1014 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 1015 | "dev": true 1016 | }, 1017 | "node_modules/jasmine": { 1018 | "version": "3.99.0", 1019 | "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.99.0.tgz", 1020 | "integrity": "sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==", 1021 | "dev": true, 1022 | "dependencies": { 1023 | "glob": "^7.1.6", 1024 | "jasmine-core": "~3.99.0" 1025 | }, 1026 | "bin": { 1027 | "jasmine": "bin/jasmine.js" 1028 | } 1029 | }, 1030 | "node_modules/jasmine-core": { 1031 | "version": "3.99.1", 1032 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", 1033 | "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", 1034 | "dev": true 1035 | }, 1036 | "node_modules/jasmine-reporters": { 1037 | "version": "2.5.2", 1038 | "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.5.2.tgz", 1039 | "integrity": "sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==", 1040 | "dev": true, 1041 | "dependencies": { 1042 | "@xmldom/xmldom": "^0.8.5", 1043 | "mkdirp": "^1.0.4" 1044 | } 1045 | }, 1046 | "node_modules/jasminewd2": { 1047 | "version": "2.2.0", 1048 | "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", 1049 | "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", 1050 | "dev": true, 1051 | "engines": { 1052 | "node": ">= 6.9.x" 1053 | } 1054 | }, 1055 | "node_modules/joi": { 1056 | "version": "17.8.4", 1057 | "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.4.tgz", 1058 | "integrity": "sha512-jjdRHb5WtL+KgSHvOULQEPPv4kcl+ixd1ybOFQq3rWLgEEqc03QMmilodL0GVJE14U/SQDXkUhQUSZANGDH/AA==", 1059 | "dev": true, 1060 | "dependencies": { 1061 | "@hapi/hoek": "^9.0.0", 1062 | "@hapi/topo": "^5.0.0", 1063 | "@sideway/address": "^4.1.3", 1064 | "@sideway/formula": "^3.0.1", 1065 | "@sideway/pinpoint": "^2.0.0" 1066 | } 1067 | }, 1068 | "node_modules/jsbn": { 1069 | "version": "0.1.1", 1070 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1071 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 1072 | "dev": true 1073 | }, 1074 | "node_modules/json-schema": { 1075 | "version": "0.4.0", 1076 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 1077 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 1078 | "dev": true 1079 | }, 1080 | "node_modules/json-schema-traverse": { 1081 | "version": "0.4.1", 1082 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1083 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1084 | "dev": true 1085 | }, 1086 | "node_modules/json-stringify-safe": { 1087 | "version": "5.0.1", 1088 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1089 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1090 | "dev": true 1091 | }, 1092 | "node_modules/jsprim": { 1093 | "version": "1.4.2", 1094 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 1095 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 1096 | "dev": true, 1097 | "dependencies": { 1098 | "assert-plus": "1.0.0", 1099 | "extsprintf": "1.3.0", 1100 | "json-schema": "0.4.0", 1101 | "verror": "1.10.0" 1102 | }, 1103 | "engines": { 1104 | "node": ">=0.6.0" 1105 | } 1106 | }, 1107 | "node_modules/jszip": { 1108 | "version": "3.10.1", 1109 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 1110 | "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 1111 | "dev": true, 1112 | "dependencies": { 1113 | "lie": "~3.3.0", 1114 | "pako": "~1.0.2", 1115 | "readable-stream": "~2.3.6", 1116 | "setimmediate": "^1.0.5" 1117 | } 1118 | }, 1119 | "node_modules/lie": { 1120 | "version": "3.3.0", 1121 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 1122 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 1123 | "dev": true, 1124 | "dependencies": { 1125 | "immediate": "~3.0.5" 1126 | } 1127 | }, 1128 | "node_modules/locate-path": { 1129 | "version": "5.0.0", 1130 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1131 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1132 | "dev": true, 1133 | "dependencies": { 1134 | "p-locate": "^4.1.0" 1135 | }, 1136 | "engines": { 1137 | "node": ">=8" 1138 | } 1139 | }, 1140 | "node_modules/lodash": { 1141 | "version": "4.17.21", 1142 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1143 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1144 | "dev": true 1145 | }, 1146 | "node_modules/map-stream": { 1147 | "version": "0.1.0", 1148 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 1149 | "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", 1150 | "dev": true 1151 | }, 1152 | "node_modules/mime-db": { 1153 | "version": "1.52.0", 1154 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1155 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1156 | "dev": true, 1157 | "engines": { 1158 | "node": ">= 0.6" 1159 | } 1160 | }, 1161 | "node_modules/mime-types": { 1162 | "version": "2.1.35", 1163 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1164 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1165 | "dev": true, 1166 | "dependencies": { 1167 | "mime-db": "1.52.0" 1168 | }, 1169 | "engines": { 1170 | "node": ">= 0.6" 1171 | } 1172 | }, 1173 | "node_modules/minimatch": { 1174 | "version": "3.1.2", 1175 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1176 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1177 | "dev": true, 1178 | "dependencies": { 1179 | "brace-expansion": "^1.1.7" 1180 | }, 1181 | "engines": { 1182 | "node": "*" 1183 | } 1184 | }, 1185 | "node_modules/minimist": { 1186 | "version": "1.2.8", 1187 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1188 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1189 | "dev": true, 1190 | "funding": { 1191 | "url": "https://github.com/sponsors/ljharb" 1192 | } 1193 | }, 1194 | "node_modules/mkdirp": { 1195 | "version": "1.0.4", 1196 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1197 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1198 | "dev": true, 1199 | "bin": { 1200 | "mkdirp": "bin/cmd.js" 1201 | }, 1202 | "engines": { 1203 | "node": ">=10" 1204 | } 1205 | }, 1206 | "node_modules/ms": { 1207 | "version": "2.1.2", 1208 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1209 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1210 | "dev": true 1211 | }, 1212 | "node_modules/node-cmd": { 1213 | "version": "3.0.0", 1214 | "resolved": "https://registry.npmjs.org/node-cmd/-/node-cmd-3.0.0.tgz", 1215 | "integrity": "sha512-SBvtm39iEkhEEDbUowR0O2YVaqpbD2nRvQ3fxXP/Tn1FgRpZAaUb8yKeEtFulBIv+xTHDodOKkj4EXIBANj+AQ==", 1216 | "dev": true 1217 | }, 1218 | "node_modules/normalize-path": { 1219 | "version": "3.0.0", 1220 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1221 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1222 | "dev": true, 1223 | "engines": { 1224 | "node": ">=0.10.0" 1225 | } 1226 | }, 1227 | "node_modules/oauth-sign": { 1228 | "version": "0.9.0", 1229 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1230 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 1231 | "dev": true, 1232 | "engines": { 1233 | "node": "*" 1234 | } 1235 | }, 1236 | "node_modules/object-assign": { 1237 | "version": "4.1.1", 1238 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1239 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1240 | "dev": true, 1241 | "engines": { 1242 | "node": ">=0.10.0" 1243 | } 1244 | }, 1245 | "node_modules/once": { 1246 | "version": "1.4.0", 1247 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1248 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1249 | "dev": true, 1250 | "dependencies": { 1251 | "wrappy": "1" 1252 | } 1253 | }, 1254 | "node_modules/os-tmpdir": { 1255 | "version": "1.0.2", 1256 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1257 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 1258 | "dev": true, 1259 | "engines": { 1260 | "node": ">=0.10.0" 1261 | } 1262 | }, 1263 | "node_modules/p-limit": { 1264 | "version": "2.3.0", 1265 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1266 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1267 | "dev": true, 1268 | "dependencies": { 1269 | "p-try": "^2.0.0" 1270 | }, 1271 | "engines": { 1272 | "node": ">=6" 1273 | }, 1274 | "funding": { 1275 | "url": "https://github.com/sponsors/sindresorhus" 1276 | } 1277 | }, 1278 | "node_modules/p-locate": { 1279 | "version": "4.1.0", 1280 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1281 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1282 | "dev": true, 1283 | "dependencies": { 1284 | "p-limit": "^2.2.0" 1285 | }, 1286 | "engines": { 1287 | "node": ">=8" 1288 | } 1289 | }, 1290 | "node_modules/p-try": { 1291 | "version": "2.2.0", 1292 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1293 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1294 | "dev": true, 1295 | "engines": { 1296 | "node": ">=6" 1297 | } 1298 | }, 1299 | "node_modules/pako": { 1300 | "version": "1.0.11", 1301 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1302 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1303 | "dev": true 1304 | }, 1305 | "node_modules/path-exists": { 1306 | "version": "4.0.0", 1307 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1308 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1309 | "dev": true, 1310 | "engines": { 1311 | "node": ">=8" 1312 | } 1313 | }, 1314 | "node_modules/path-is-absolute": { 1315 | "version": "1.0.1", 1316 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1317 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1318 | "dev": true, 1319 | "engines": { 1320 | "node": ">=0.10.0" 1321 | } 1322 | }, 1323 | "node_modules/path-is-inside": { 1324 | "version": "1.0.2", 1325 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1326 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 1327 | "dev": true 1328 | }, 1329 | "node_modules/pause-stream": { 1330 | "version": "0.0.11", 1331 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 1332 | "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", 1333 | "dev": true, 1334 | "dependencies": { 1335 | "through": "~2.3" 1336 | } 1337 | }, 1338 | "node_modules/performance-now": { 1339 | "version": "2.1.0", 1340 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1341 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", 1342 | "dev": true 1343 | }, 1344 | "node_modules/picomatch": { 1345 | "version": "2.3.1", 1346 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1347 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1348 | "dev": true, 1349 | "engines": { 1350 | "node": ">=8.6" 1351 | }, 1352 | "funding": { 1353 | "url": "https://github.com/sponsors/jonschlinkert" 1354 | } 1355 | }, 1356 | "node_modules/pify": { 1357 | "version": "2.3.0", 1358 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1359 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1360 | "dev": true, 1361 | "engines": { 1362 | "node": ">=0.10.0" 1363 | } 1364 | }, 1365 | "node_modules/pinkie": { 1366 | "version": "2.0.4", 1367 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1368 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 1369 | "dev": true, 1370 | "engines": { 1371 | "node": ">=0.10.0" 1372 | } 1373 | }, 1374 | "node_modules/pinkie-promise": { 1375 | "version": "2.0.1", 1376 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1377 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 1378 | "dev": true, 1379 | "dependencies": { 1380 | "pinkie": "^2.0.0" 1381 | }, 1382 | "engines": { 1383 | "node": ">=0.10.0" 1384 | } 1385 | }, 1386 | "node_modules/platform": { 1387 | "version": "1.3.6", 1388 | "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", 1389 | "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", 1390 | "dev": true 1391 | }, 1392 | "node_modules/process-nextick-args": { 1393 | "version": "2.0.1", 1394 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1395 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1396 | "dev": true 1397 | }, 1398 | "node_modules/protractor": { 1399 | "version": "7.0.0", 1400 | "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", 1401 | "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", 1402 | "deprecated": "We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular", 1403 | "dev": true, 1404 | "dependencies": { 1405 | "@types/q": "^0.0.32", 1406 | "@types/selenium-webdriver": "^3.0.0", 1407 | "blocking-proxy": "^1.0.0", 1408 | "browserstack": "^1.5.1", 1409 | "chalk": "^1.1.3", 1410 | "glob": "^7.0.3", 1411 | "jasmine": "2.8.0", 1412 | "jasminewd2": "^2.1.0", 1413 | "q": "1.4.1", 1414 | "saucelabs": "^1.5.0", 1415 | "selenium-webdriver": "3.6.0", 1416 | "source-map-support": "~0.4.0", 1417 | "webdriver-js-extender": "2.1.0", 1418 | "webdriver-manager": "^12.1.7", 1419 | "yargs": "^15.3.1" 1420 | }, 1421 | "bin": { 1422 | "protractor": "bin/protractor", 1423 | "webdriver-manager": "bin/webdriver-manager" 1424 | }, 1425 | "engines": { 1426 | "node": ">=10.13.x" 1427 | } 1428 | }, 1429 | "node_modules/protractor/node_modules/ansi-regex": { 1430 | "version": "2.1.1", 1431 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1432 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 1433 | "dev": true, 1434 | "engines": { 1435 | "node": ">=0.10.0" 1436 | } 1437 | }, 1438 | "node_modules/protractor/node_modules/ansi-styles": { 1439 | "version": "2.2.1", 1440 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1441 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 1442 | "dev": true, 1443 | "engines": { 1444 | "node": ">=0.10.0" 1445 | } 1446 | }, 1447 | "node_modules/protractor/node_modules/chalk": { 1448 | "version": "1.1.3", 1449 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1450 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 1451 | "dev": true, 1452 | "dependencies": { 1453 | "ansi-styles": "^2.2.1", 1454 | "escape-string-regexp": "^1.0.2", 1455 | "has-ansi": "^2.0.0", 1456 | "strip-ansi": "^3.0.0", 1457 | "supports-color": "^2.0.0" 1458 | }, 1459 | "engines": { 1460 | "node": ">=0.10.0" 1461 | } 1462 | }, 1463 | "node_modules/protractor/node_modules/jasmine": { 1464 | "version": "2.8.0", 1465 | "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", 1466 | "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", 1467 | "dev": true, 1468 | "dependencies": { 1469 | "exit": "^0.1.2", 1470 | "glob": "^7.0.6", 1471 | "jasmine-core": "~2.8.0" 1472 | }, 1473 | "bin": { 1474 | "jasmine": "bin/jasmine.js" 1475 | } 1476 | }, 1477 | "node_modules/protractor/node_modules/jasmine-core": { 1478 | "version": "2.8.0", 1479 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", 1480 | "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", 1481 | "dev": true 1482 | }, 1483 | "node_modules/protractor/node_modules/strip-ansi": { 1484 | "version": "3.0.1", 1485 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1486 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 1487 | "dev": true, 1488 | "dependencies": { 1489 | "ansi-regex": "^2.0.0" 1490 | }, 1491 | "engines": { 1492 | "node": ">=0.10.0" 1493 | } 1494 | }, 1495 | "node_modules/protractor/node_modules/supports-color": { 1496 | "version": "2.0.0", 1497 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1498 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 1499 | "dev": true, 1500 | "engines": { 1501 | "node": ">=0.8.0" 1502 | } 1503 | }, 1504 | "node_modules/ps-tree": { 1505 | "version": "1.2.0", 1506 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", 1507 | "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", 1508 | "dev": true, 1509 | "dependencies": { 1510 | "event-stream": "=3.3.4" 1511 | }, 1512 | "bin": { 1513 | "ps-tree": "bin/ps-tree.js" 1514 | }, 1515 | "engines": { 1516 | "node": ">= 0.10" 1517 | } 1518 | }, 1519 | "node_modules/psl": { 1520 | "version": "1.9.0", 1521 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1522 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 1523 | "dev": true 1524 | }, 1525 | "node_modules/punycode": { 1526 | "version": "2.3.0", 1527 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 1528 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 1529 | "dev": true, 1530 | "engines": { 1531 | "node": ">=6" 1532 | } 1533 | }, 1534 | "node_modules/q": { 1535 | "version": "1.4.1", 1536 | "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", 1537 | "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", 1538 | "dev": true, 1539 | "engines": { 1540 | "node": ">=0.6.0", 1541 | "teleport": ">=0.2.0" 1542 | } 1543 | }, 1544 | "node_modules/qs": { 1545 | "version": "6.5.3", 1546 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 1547 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 1548 | "dev": true, 1549 | "engines": { 1550 | "node": ">=0.6" 1551 | } 1552 | }, 1553 | "node_modules/readable-stream": { 1554 | "version": "2.3.8", 1555 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1556 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1557 | "dev": true, 1558 | "dependencies": { 1559 | "core-util-is": "~1.0.0", 1560 | "inherits": "~2.0.3", 1561 | "isarray": "~1.0.0", 1562 | "process-nextick-args": "~2.0.0", 1563 | "safe-buffer": "~5.1.1", 1564 | "string_decoder": "~1.1.1", 1565 | "util-deprecate": "~1.0.1" 1566 | } 1567 | }, 1568 | "node_modules/readdirp": { 1569 | "version": "3.6.0", 1570 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1571 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1572 | "dev": true, 1573 | "dependencies": { 1574 | "picomatch": "^2.2.1" 1575 | }, 1576 | "engines": { 1577 | "node": ">=8.10.0" 1578 | } 1579 | }, 1580 | "node_modules/request": { 1581 | "version": "2.88.2", 1582 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1583 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1584 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 1585 | "dev": true, 1586 | "dependencies": { 1587 | "aws-sign2": "~0.7.0", 1588 | "aws4": "^1.8.0", 1589 | "caseless": "~0.12.0", 1590 | "combined-stream": "~1.0.6", 1591 | "extend": "~3.0.2", 1592 | "forever-agent": "~0.6.1", 1593 | "form-data": "~2.3.2", 1594 | "har-validator": "~5.1.3", 1595 | "http-signature": "~1.2.0", 1596 | "is-typedarray": "~1.0.0", 1597 | "isstream": "~0.1.2", 1598 | "json-stringify-safe": "~5.0.1", 1599 | "mime-types": "~2.1.19", 1600 | "oauth-sign": "~0.9.0", 1601 | "performance-now": "^2.1.0", 1602 | "qs": "~6.5.2", 1603 | "safe-buffer": "^5.1.2", 1604 | "tough-cookie": "~2.5.0", 1605 | "tunnel-agent": "^0.6.0", 1606 | "uuid": "^3.3.2" 1607 | }, 1608 | "engines": { 1609 | "node": ">= 6" 1610 | } 1611 | }, 1612 | "node_modules/require-directory": { 1613 | "version": "2.1.1", 1614 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1615 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1616 | "dev": true, 1617 | "engines": { 1618 | "node": ">=0.10.0" 1619 | } 1620 | }, 1621 | "node_modules/require-main-filename": { 1622 | "version": "2.0.0", 1623 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1624 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1625 | "dev": true 1626 | }, 1627 | "node_modules/rimraf": { 1628 | "version": "2.7.1", 1629 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1630 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1631 | "dev": true, 1632 | "dependencies": { 1633 | "glob": "^7.1.3" 1634 | }, 1635 | "bin": { 1636 | "rimraf": "bin.js" 1637 | } 1638 | }, 1639 | "node_modules/rxjs": { 1640 | "version": "6.6.7", 1641 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 1642 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 1643 | "dev": true, 1644 | "dependencies": { 1645 | "tslib": "^1.9.0" 1646 | }, 1647 | "engines": { 1648 | "npm": ">=2.0.0" 1649 | } 1650 | }, 1651 | "node_modules/safe-buffer": { 1652 | "version": "5.1.2", 1653 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1654 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1655 | "dev": true 1656 | }, 1657 | "node_modules/safer-buffer": { 1658 | "version": "2.1.2", 1659 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1660 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1661 | "dev": true 1662 | }, 1663 | "node_modules/saucelabs": { 1664 | "version": "1.5.0", 1665 | "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", 1666 | "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", 1667 | "dev": true, 1668 | "dependencies": { 1669 | "https-proxy-agent": "^2.2.1" 1670 | }, 1671 | "engines": { 1672 | "node": "*" 1673 | } 1674 | }, 1675 | "node_modules/sax": { 1676 | "version": "1.2.4", 1677 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1678 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 1679 | "dev": true 1680 | }, 1681 | "node_modules/selenium-webdriver": { 1682 | "version": "3.6.0", 1683 | "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", 1684 | "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", 1685 | "dev": true, 1686 | "dependencies": { 1687 | "jszip": "^3.1.3", 1688 | "rimraf": "^2.5.4", 1689 | "tmp": "0.0.30", 1690 | "xml2js": "^0.4.17" 1691 | }, 1692 | "engines": { 1693 | "node": ">= 6.9.0" 1694 | } 1695 | }, 1696 | "node_modules/semver": { 1697 | "version": "5.7.1", 1698 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1699 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1700 | "dev": true, 1701 | "bin": { 1702 | "semver": "bin/semver" 1703 | } 1704 | }, 1705 | "node_modules/set-blocking": { 1706 | "version": "2.0.0", 1707 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1708 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", 1709 | "dev": true 1710 | }, 1711 | "node_modules/setimmediate": { 1712 | "version": "1.0.5", 1713 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1714 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 1715 | "dev": true 1716 | }, 1717 | "node_modules/source-map": { 1718 | "version": "0.5.7", 1719 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1720 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 1721 | "dev": true, 1722 | "engines": { 1723 | "node": ">=0.10.0" 1724 | } 1725 | }, 1726 | "node_modules/source-map-support": { 1727 | "version": "0.4.18", 1728 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1729 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1730 | "dev": true, 1731 | "dependencies": { 1732 | "source-map": "^0.5.6" 1733 | } 1734 | }, 1735 | "node_modules/split": { 1736 | "version": "0.3.3", 1737 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 1738 | "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", 1739 | "dev": true, 1740 | "dependencies": { 1741 | "through": "2" 1742 | }, 1743 | "engines": { 1744 | "node": "*" 1745 | } 1746 | }, 1747 | "node_modules/sshpk": { 1748 | "version": "1.17.0", 1749 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 1750 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 1751 | "dev": true, 1752 | "dependencies": { 1753 | "asn1": "~0.2.3", 1754 | "assert-plus": "^1.0.0", 1755 | "bcrypt-pbkdf": "^1.0.0", 1756 | "dashdash": "^1.12.0", 1757 | "ecc-jsbn": "~0.1.1", 1758 | "getpass": "^0.1.1", 1759 | "jsbn": "~0.1.0", 1760 | "safer-buffer": "^2.0.2", 1761 | "tweetnacl": "~0.14.0" 1762 | }, 1763 | "bin": { 1764 | "sshpk-conv": "bin/sshpk-conv", 1765 | "sshpk-sign": "bin/sshpk-sign", 1766 | "sshpk-verify": "bin/sshpk-verify" 1767 | }, 1768 | "engines": { 1769 | "node": ">=0.10.0" 1770 | } 1771 | }, 1772 | "node_modules/stream-combiner": { 1773 | "version": "0.0.4", 1774 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 1775 | "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", 1776 | "dev": true, 1777 | "dependencies": { 1778 | "duplexer": "~0.1.1" 1779 | } 1780 | }, 1781 | "node_modules/string_decoder": { 1782 | "version": "1.1.1", 1783 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1784 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1785 | "dev": true, 1786 | "dependencies": { 1787 | "safe-buffer": "~5.1.0" 1788 | } 1789 | }, 1790 | "node_modules/string-width": { 1791 | "version": "4.2.3", 1792 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1793 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1794 | "dev": true, 1795 | "dependencies": { 1796 | "emoji-regex": "^8.0.0", 1797 | "is-fullwidth-code-point": "^3.0.0", 1798 | "strip-ansi": "^6.0.1" 1799 | }, 1800 | "engines": { 1801 | "node": ">=8" 1802 | } 1803 | }, 1804 | "node_modules/strip-ansi": { 1805 | "version": "6.0.1", 1806 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1807 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1808 | "dev": true, 1809 | "dependencies": { 1810 | "ansi-regex": "^5.0.1" 1811 | }, 1812 | "engines": { 1813 | "node": ">=8" 1814 | } 1815 | }, 1816 | "node_modules/supports-color": { 1817 | "version": "7.2.0", 1818 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1819 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1820 | "dev": true, 1821 | "dependencies": { 1822 | "has-flag": "^4.0.0" 1823 | }, 1824 | "engines": { 1825 | "node": ">=8" 1826 | } 1827 | }, 1828 | "node_modules/through": { 1829 | "version": "2.3.8", 1830 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1831 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 1832 | "dev": true 1833 | }, 1834 | "node_modules/tmp": { 1835 | "version": "0.0.30", 1836 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", 1837 | "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", 1838 | "dev": true, 1839 | "dependencies": { 1840 | "os-tmpdir": "~1.0.1" 1841 | }, 1842 | "engines": { 1843 | "node": ">=0.4.0" 1844 | } 1845 | }, 1846 | "node_modules/to-regex-range": { 1847 | "version": "5.0.1", 1848 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1849 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1850 | "dev": true, 1851 | "dependencies": { 1852 | "is-number": "^7.0.0" 1853 | }, 1854 | "engines": { 1855 | "node": ">=8.0" 1856 | } 1857 | }, 1858 | "node_modules/tough-cookie": { 1859 | "version": "2.5.0", 1860 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1861 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1862 | "dev": true, 1863 | "dependencies": { 1864 | "psl": "^1.1.28", 1865 | "punycode": "^2.1.1" 1866 | }, 1867 | "engines": { 1868 | "node": ">=0.8" 1869 | } 1870 | }, 1871 | "node_modules/tslib": { 1872 | "version": "1.14.1", 1873 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1874 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 1875 | "dev": true 1876 | }, 1877 | "node_modules/tunnel-agent": { 1878 | "version": "0.6.0", 1879 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1880 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 1881 | "dev": true, 1882 | "dependencies": { 1883 | "safe-buffer": "^5.0.1" 1884 | }, 1885 | "engines": { 1886 | "node": "*" 1887 | } 1888 | }, 1889 | "node_modules/tweetnacl": { 1890 | "version": "0.14.5", 1891 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1892 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 1893 | "dev": true 1894 | }, 1895 | "node_modules/uri-js": { 1896 | "version": "4.4.1", 1897 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1898 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1899 | "dev": true, 1900 | "dependencies": { 1901 | "punycode": "^2.1.0" 1902 | } 1903 | }, 1904 | "node_modules/util-deprecate": { 1905 | "version": "1.0.2", 1906 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1907 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1908 | "dev": true 1909 | }, 1910 | "node_modules/uuid": { 1911 | "version": "3.4.0", 1912 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1913 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 1914 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 1915 | "dev": true, 1916 | "bin": { 1917 | "uuid": "bin/uuid" 1918 | } 1919 | }, 1920 | "node_modules/verror": { 1921 | "version": "1.10.0", 1922 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1923 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 1924 | "dev": true, 1925 | "engines": [ 1926 | "node >=0.6.0" 1927 | ], 1928 | "dependencies": { 1929 | "assert-plus": "^1.0.0", 1930 | "core-util-is": "1.0.2", 1931 | "extsprintf": "^1.2.0" 1932 | } 1933 | }, 1934 | "node_modules/verror/node_modules/core-util-is": { 1935 | "version": "1.0.2", 1936 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1937 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 1938 | "dev": true 1939 | }, 1940 | "node_modules/wait-on": { 1941 | "version": "5.3.0", 1942 | "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", 1943 | "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", 1944 | "dev": true, 1945 | "dependencies": { 1946 | "axios": "^0.21.1", 1947 | "joi": "^17.3.0", 1948 | "lodash": "^4.17.21", 1949 | "minimist": "^1.2.5", 1950 | "rxjs": "^6.6.3" 1951 | }, 1952 | "bin": { 1953 | "wait-on": "bin/wait-on" 1954 | }, 1955 | "engines": { 1956 | "node": ">=8.9.0" 1957 | } 1958 | }, 1959 | "node_modules/webdriver-js-extender": { 1960 | "version": "2.1.0", 1961 | "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", 1962 | "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", 1963 | "dev": true, 1964 | "dependencies": { 1965 | "@types/selenium-webdriver": "^3.0.0", 1966 | "selenium-webdriver": "^3.0.1" 1967 | }, 1968 | "engines": { 1969 | "node": ">=6.9.x" 1970 | } 1971 | }, 1972 | "node_modules/webdriver-manager": { 1973 | "version": "12.1.9", 1974 | "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.9.tgz", 1975 | "integrity": "sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==", 1976 | "dev": true, 1977 | "dependencies": { 1978 | "adm-zip": "^0.5.2", 1979 | "chalk": "^1.1.1", 1980 | "del": "^2.2.0", 1981 | "glob": "^7.0.3", 1982 | "ini": "^1.3.4", 1983 | "minimist": "^1.2.0", 1984 | "q": "^1.4.1", 1985 | "request": "^2.87.0", 1986 | "rimraf": "^2.5.2", 1987 | "semver": "^5.3.0", 1988 | "xml2js": "^0.4.17" 1989 | }, 1990 | "bin": { 1991 | "webdriver-manager": "bin/webdriver-manager" 1992 | }, 1993 | "engines": { 1994 | "node": ">=6.9.x" 1995 | } 1996 | }, 1997 | "node_modules/webdriver-manager/node_modules/ansi-regex": { 1998 | "version": "2.1.1", 1999 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2000 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 2001 | "dev": true, 2002 | "engines": { 2003 | "node": ">=0.10.0" 2004 | } 2005 | }, 2006 | "node_modules/webdriver-manager/node_modules/ansi-styles": { 2007 | "version": "2.2.1", 2008 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 2009 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 2010 | "dev": true, 2011 | "engines": { 2012 | "node": ">=0.10.0" 2013 | } 2014 | }, 2015 | "node_modules/webdriver-manager/node_modules/chalk": { 2016 | "version": "1.1.3", 2017 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 2018 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 2019 | "dev": true, 2020 | "dependencies": { 2021 | "ansi-styles": "^2.2.1", 2022 | "escape-string-regexp": "^1.0.2", 2023 | "has-ansi": "^2.0.0", 2024 | "strip-ansi": "^3.0.0", 2025 | "supports-color": "^2.0.0" 2026 | }, 2027 | "engines": { 2028 | "node": ">=0.10.0" 2029 | } 2030 | }, 2031 | "node_modules/webdriver-manager/node_modules/strip-ansi": { 2032 | "version": "3.0.1", 2033 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2034 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 2035 | "dev": true, 2036 | "dependencies": { 2037 | "ansi-regex": "^2.0.0" 2038 | }, 2039 | "engines": { 2040 | "node": ">=0.10.0" 2041 | } 2042 | }, 2043 | "node_modules/webdriver-manager/node_modules/supports-color": { 2044 | "version": "2.0.0", 2045 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2046 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 2047 | "dev": true, 2048 | "engines": { 2049 | "node": ">=0.8.0" 2050 | } 2051 | }, 2052 | "node_modules/which-module": { 2053 | "version": "2.0.0", 2054 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 2055 | "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", 2056 | "dev": true 2057 | }, 2058 | "node_modules/wrap-ansi": { 2059 | "version": "6.2.0", 2060 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 2061 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2062 | "dev": true, 2063 | "dependencies": { 2064 | "ansi-styles": "^4.0.0", 2065 | "string-width": "^4.1.0", 2066 | "strip-ansi": "^6.0.0" 2067 | }, 2068 | "engines": { 2069 | "node": ">=8" 2070 | } 2071 | }, 2072 | "node_modules/wrappy": { 2073 | "version": "1.0.2", 2074 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2075 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2076 | "dev": true 2077 | }, 2078 | "node_modules/xml2js": { 2079 | "version": "0.4.23", 2080 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", 2081 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", 2082 | "dev": true, 2083 | "dependencies": { 2084 | "sax": ">=0.6.0", 2085 | "xmlbuilder": "~11.0.0" 2086 | }, 2087 | "engines": { 2088 | "node": ">=4.0.0" 2089 | } 2090 | }, 2091 | "node_modules/xmlbuilder": { 2092 | "version": "11.0.1", 2093 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 2094 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 2095 | "dev": true, 2096 | "engines": { 2097 | "node": ">=4.0" 2098 | } 2099 | }, 2100 | "node_modules/y18n": { 2101 | "version": "4.0.3", 2102 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 2103 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", 2104 | "dev": true 2105 | }, 2106 | "node_modules/yargs": { 2107 | "version": "15.4.1", 2108 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 2109 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 2110 | "dev": true, 2111 | "dependencies": { 2112 | "cliui": "^6.0.0", 2113 | "decamelize": "^1.2.0", 2114 | "find-up": "^4.1.0", 2115 | "get-caller-file": "^2.0.1", 2116 | "require-directory": "^2.1.1", 2117 | "require-main-filename": "^2.0.0", 2118 | "set-blocking": "^2.0.0", 2119 | "string-width": "^4.2.0", 2120 | "which-module": "^2.0.0", 2121 | "y18n": "^4.0.0", 2122 | "yargs-parser": "^18.1.2" 2123 | }, 2124 | "engines": { 2125 | "node": ">=8" 2126 | } 2127 | }, 2128 | "node_modules/yargs-parser": { 2129 | "version": "18.1.3", 2130 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 2131 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 2132 | "dev": true, 2133 | "dependencies": { 2134 | "camelcase": "^5.0.0", 2135 | "decamelize": "^1.2.0" 2136 | }, 2137 | "engines": { 2138 | "node": ">=6" 2139 | } 2140 | } 2141 | } 2142 | } 2143 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@okta/samples-python-flask", 3 | "version": "0.1.0", 4 | "description": "Python 2 - Flask Sample Applications for Okta", 5 | "author": "Brian Retterer ", 6 | "license": "Apache-2.0", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/okta/samples-python-flask.git" 10 | }, 11 | "bugs": { 12 | "url": "https://github.com/okta/samples-python-flask/issues" 13 | }, 14 | "homepage": "https://github.com/okta/samples-python-flask#readme", 15 | "devDependencies": { 16 | "dotenv": "^5.0.1", 17 | "find-process": "^1.1.0", 18 | "forever-monitor": "npm:@umpacken/forever-monitor@^1.6.1", 19 | "node-cmd": "^3.0.0", 20 | "jasmine": "^3.0.0", 21 | "jasmine-reporters": "^2.5", 22 | "platform": "^1.3.5", 23 | "protractor": "^7.0.0", 24 | "wait-on": "^5.3.0" 25 | }, 26 | "scripts": { 27 | "test": "npm run test:e2e && npm run test:resource-server", 28 | "test:e2e": "npm run test:okta-hosted-login && npm run test:custom-login", 29 | "okta-hosted-login-server": "cd okta-hosted-login && python main.py", 30 | "test:okta-hosted-login": "protractor okta-oidc-tck/e2e-tests/okta-hosted-login/conf.js", 31 | "custom-login-server": "cd custom-login && python main.py", 32 | "setup-env": "node scripts/setup-env.js", 33 | "test:custom-login": "protractor okta-oidc-tck/e2e-tests/custom-login/conf.js", 34 | "resource-server": "cd resource-server && python main.py", 35 | "test:resource-server": "jasmine okta-oidc-tck/resource-server/specs/okta-resource-server-spec.js", 36 | "pretest": "webdriver-manager update --gecko false" 37 | } 38 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.21.0 2 | Flask==1.0.2 3 | flask-cors==3.0.10 4 | pyOpenSSL==23.2.0 5 | Flask-Login==0.4.1 6 | okta-jwt-verifier==0.2.0 -------------------------------------------------------------------------------- /resource-server/.gitignore: -------------------------------------------------------------------------------- 1 | client_secrets.json -------------------------------------------------------------------------------- /resource-server/README.md: -------------------------------------------------------------------------------- 1 | # Flask Resource Server Example 2 | 3 | This sample application authenticates requests against your Flask application, using access tokens. 4 | 5 | The access tokens are obtained via the [Implicit Flow][]. As such, you will need to use one of our front-end samples with this project. It is the responsibility of the front-end to authenticate the user, then use the obtained access tokens to make requests to this resource server. 6 | 7 | > Requires Python version 3.6.0 or higher. 8 | 9 | ## Prerequisites 10 | 11 | Before running this sample, you will need the following: 12 | 13 | * An Okta Developer Account, you can sign up for one at https://developer.okta.com/signup/. 14 | * An Okta Application, configured for Web mode. This is done from the Okta Developer Console and you can find instructions [here][OIDC WEB Setup Instructions]. When following the wizard, use the default properties. They are are designed to work with our sample applications. 15 | * An Okta Application, configured for Singe-Page App (SPA) mode. This is done from the Okta Developer Console and you can find instructions [here][OIDC SPA Setup Instructions] or follow instructions within one of our front-end samples below. When following the wizard, use the default properties. They are are designed to work with our sample applications. 16 | * One of our front-end sample applications to demonstrate the interaction with the resource server: 17 | * [Okta Angular Sample Apps][] 18 | * [Okta React Sample Apps][] 19 | * [Okta Vue Sample Apps][] 20 | 21 | A typical resource-server requires a frontend and a backend application, so you will need to start each process: 22 | 23 | ## Running This Example 24 | To run this application, you first need to clone this repo and then enter into this directory: 25 | 26 | ```bash 27 | git clone git@github.com:okta/samples-python-flask.git 28 | cd samples-python-flask/resource-server 29 | ``` 30 | 31 | Then install dependencies: 32 | 33 | ```bash 34 | pip install -r requirements.txt 35 | ``` 36 | 37 | Now you need to gather the following information from the Okta Developer Console that belongs to your front-end application: 38 | - **Client ID** - The client ID of the Web application that you created earlier. This can be found on the "General" tab of an application, or the list of applications. This identifies the application that tokens will be minted for. 39 | - **Issuer** - This is the URL of the authorization server that will perform authentication. All Developer Accounts have a "default" authorization server. The issuer is a combination of your Org URL (found in the upper right of the console home page) and `/oauth2/default`. For example, `https://dev-1234.oktapreview.com/oauth2/default`. 40 | 41 | Now that you have the information needed from your organization, open the `okta-hosted-login` directory. Copy the [`client_secrets.json.dist`](client_secrets.json.dist) to `client_secrets.json` and fill in the information you gathered. 42 | 43 | ```json 44 | { 45 | "auth_uri": "https://{yourOktaDomain}/oauth2/default/v1/authorize", 46 | "client_id": "{yourClientId}", 47 | "client_secret": "{yourClientSecret}", 48 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 49 | "issuer": "https://{yourOktaDomain}/oauth2/default", 50 | "token_uri": "https://{yourOktaDomain}/oauth2/default/v1/token", 51 | "token_introspection_uri": "https://{yourOktaDomain}/oauth2/default/v1/introspect", 52 | "userinfo_uri": "https://{yourOktaDomain}/oauth2/default/v1/userinfo" 53 | } 54 | ``` 55 | 56 | Next, Start the resource server example: 57 | 58 | ```bash 59 | python main.py 60 | ``` 61 | 62 | Finally, install the [front-end sample project of your choice](#prerequisites) and run the sample application. 63 | Once the front-end sample is running, you can navigate to http://localhost:8080 in your browser and log in to the front-end application. Once logged in, you can navigate to the "Messages" page to see the interaction with the resource server. 64 | 65 | 66 | [Implicit Flow]: https://developer.okta.com/authentication-guide/implementing-authentication/implicit 67 | [Okta Angular Sample Apps]: https://github.com/okta/samples-js-angular 68 | [Okta Vue Sample Apps]: https://github.com/okta/samples-js-vue 69 | [Okta React Sample Apps]: https://github.com/okta/samples-js-react 70 | [OIDC SPA Setup Instructions]: https://developer.okta.com/authentication-guide/implementing-authentication/implicit#1-setting-up-your-application 71 | [OIDC Web Setup Instructions]: https://developer.okta.com/authentication-guide/implementing-authentication/auth-code#1-setting-up-your-application 72 | -------------------------------------------------------------------------------- /resource-server/client_secrets.json.dist: -------------------------------------------------------------------------------- 1 | { 2 | "auth_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/authorize", 3 | "client_id": "{{CLIENT_ID}}", 4 | "client_secret": "{{CLIENT_SECRET}}", 5 | "redirect_uri": "http://localhost:8080/authorization-code/callback", 6 | "issuer": "https://{{OKTA_DOMAIN}}/oauth2/default", 7 | "token_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/token", 8 | "userinfo_uri": "https://{{OKTA_DOMAIN}}/oauth2/default/v1/userinfo" 9 | } 10 | -------------------------------------------------------------------------------- /resource-server/helpers.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | 4 | from okta_jwt_verifier import AccessTokenVerifier 5 | 6 | 7 | loop = asyncio.get_event_loop() 8 | 9 | 10 | def is_access_token_valid(token, issuer): 11 | jwt_verifier = AccessTokenVerifier(issuer=issuer, audience='api://default') 12 | try: 13 | loop.run_until_complete(jwt_verifier.verify(token)) 14 | return True 15 | except Exception: 16 | return False 17 | 18 | 19 | def load_config(fname='./client_secrets.json'): 20 | config = None 21 | with open(fname) as f: 22 | config = json.load(f) 23 | return config 24 | 25 | 26 | config = load_config() 27 | -------------------------------------------------------------------------------- /resource-server/main.py: -------------------------------------------------------------------------------- 1 | import json 2 | import time 3 | 4 | from flask import Flask, request 5 | from flask_cors import CORS 6 | 7 | from helpers import is_access_token_valid, config 8 | 9 | 10 | app = Flask(__name__) 11 | CORS(app) 12 | app.config.update({ 13 | 'SECRET_KEY': 'SomethingNotEntirelySecret', 14 | }) 15 | 16 | 17 | def is_authorized(request): 18 | """Get access token from authorization header.""" 19 | try: 20 | token = request.headers.get("Authorization").split("Bearer ")[1] 21 | return is_access_token_valid(token, config["issuer"]) 22 | except Exception: 23 | return False 24 | 25 | 26 | @app.route("/") 27 | def home(): 28 | return "Hello! There's not much to see here." \ 29 | "Please grab one of our front-end samples for use with this sample resource server" 30 | 31 | 32 | @app.route("/api/messages") 33 | def messages(): 34 | if not is_authorized(request): 35 | return "Unauthorized", 401 36 | 37 | response = { 38 | 'messages': [ 39 | { 40 | 'date': time.time(), 41 | 'text': 'I am a robot.' 42 | }, 43 | { 44 | 'date': time.time()-3600, 45 | 'text': 'Hello, World!' 46 | } 47 | ] 48 | } 49 | 50 | return json.dumps(response) 51 | 52 | 53 | if __name__ == '__main__': 54 | app.run(host="localhost", port=8000, debug=True) 55 | -------------------------------------------------------------------------------- /scripts/setup-env.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, Okta, Inc. and/or its affiliates. All rights reserved. 3 | * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") 4 | * 5 | * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. 6 | * Unless required by applicable law or agreed to in writing, software 7 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 8 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 9 | * 10 | * See the License for the specific language governing permissions and limitations under the License. 11 | */ 12 | 13 | /* eslint-disable consistent-return, no-console */ 14 | 15 | 'use strict'; 16 | 17 | const fs = require('fs'); 18 | const { execSync } = require('child_process'); 19 | const path = require('path'); 20 | 21 | // Users can also provide the testenv configuration at the root folder 22 | require('dotenv').config({path: path.join(__dirname, '..', 'testenv')}); 23 | 24 | function updateConfig(directory) { 25 | if (!process.env.ISSUER || !process.env.CLIENT_ID || !process.env.CLIENT_SECRET || !process.env.USERNAME || !process.env.PASSWORD) { 26 | console.log('[ERROR] Please set the necessary Environment variables (ISSUER, CLIENT_ID, CLIENT_SECRET, USERNAME, PASSWORD)'); 27 | process.exit(1); 28 | } 29 | 30 | const envFile = path.join(directory, '.env'); 31 | const data = fs.readFileSync(envFile, 'utf8'); 32 | 33 | let clientId = process.env.CLIENT_ID; 34 | // For resource server, we need to set client_id of SPA in .env 35 | if (directory.includes('resource-server')) { 36 | if (!process.env.SPA_CLIENT_ID) { 37 | console.error('[ERROR] Please set the SPA_CLIENT_ID for resource-server tests'); 38 | process.exit(1); 39 | } 40 | clientId = process.env.SPA_CLIENT_ID; 41 | } 42 | 43 | let result = data.replace(/CLIENT_ID=/g, `CLIENT_ID=${clientId}`); 44 | result = result.replace(/CLIENT_SECRET=/g, `CLIENT_SECRET=${process.env.CLIENT_SECRET}`); 45 | result = result.replace(/ISSUER=https:\/\/{yourOktaDomain}.com\/oauth2\/default/g, `ISSUER=${process.env.ISSUER}/`); 46 | fs.writeFileSync(envFile, result, 'utf8'); 47 | } 48 | 49 | function updateAllConfigs() { 50 | const oktaHostedLoginDir = path.join(__dirname, '..', 'okta-hosted-login'); 51 | const customLoginDir = path.join(__dirname, '..', 'custom-login'); 52 | const resourceServerDir = path.join(__dirname, '..', 'resource-server'); 53 | 54 | copyAndUpdateConfig(oktaHostedLoginDir); 55 | copyAndUpdateConfig(customLoginDir); 56 | copyAndUpdateConfig(resourceServerDir); 57 | } 58 | 59 | function cloneRepository(repository, directory) { 60 | const dir = path.join(__dirname, '..', directory); 61 | if (fs.existsSync(dir)) { 62 | console.log(`${directory} is already cloned. Getting latest version...`); 63 | execSync(`cd ${directory} && git pull`) 64 | return; 65 | } 66 | 67 | const command = `git clone ${repository}`; 68 | console.log(`Cloning repository ${directory}`); 69 | execSync(command); 70 | } 71 | 72 | function copyAndUpdateConfig(directory) { 73 | const envFile = path.join(directory, '.env'); 74 | 75 | if (fs.existsSync(envFile)) { 76 | console.log(`.env file already exists in ${directory}`); 77 | return; 78 | } 79 | 80 | const copyCommand = process.platform === 'win32'? 'copy' : 'cp'; 81 | 82 | execSync(`${copyCommand} ${path.join(directory, '.env.dist')} ${path.join(directory, '.env')}`); 83 | 84 | updateConfig(directory); 85 | } 86 | 87 | updateAllConfigs(); 88 | cloneRepository('https://github.com/okta/okta-oidc-tck.git', 'okta-oidc-tck'); -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | from collections import OrderedDict 4 | 5 | from setuptools import setup 6 | 7 | setup( 8 | name='samples-python-flask', 9 | version='2.0.0', 10 | url='https://developer.okta.com', 11 | project_urls=OrderedDict(( 12 | ('Code', 'https://github.com/okta/samples-python-flask'), 13 | ('Documentation', 'https://github.com/okta/samples-python-flask/blob/master/README.md'), 14 | ('Issue Tracker', 'https://github.com/okta/okta-python-flask/issues'), 15 | )), 16 | license='Apache-2.0', 17 | python_requires='>=3.6,' 18 | ) 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@hapi/hoek@^9.0.0": 6 | version "9.3.0" 7 | resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" 8 | integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== 9 | 10 | "@hapi/topo@^5.0.0": 11 | version "5.1.0" 12 | resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" 13 | integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== 14 | dependencies: 15 | "@hapi/hoek" "^9.0.0" 16 | 17 | "@sideway/address@^4.1.3": 18 | version "4.1.4" 19 | resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" 20 | integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== 21 | dependencies: 22 | "@hapi/hoek" "^9.0.0" 23 | 24 | "@sideway/formula@^3.0.0": 25 | version "3.0.0" 26 | resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz" 27 | integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== 28 | 29 | "@sideway/pinpoint@^2.0.0": 30 | version "2.0.0" 31 | resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" 32 | integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== 33 | 34 | "@types/q@^0.0.32": 35 | version "0.0.32" 36 | resolved "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz" 37 | integrity sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug== 38 | 39 | "@types/selenium-webdriver@^3.0.0": 40 | version "3.0.20" 41 | resolved "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz" 42 | integrity sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA== 43 | 44 | "@xmldom/xmldom@^0.7.3": 45 | version "0.7.5" 46 | resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz" 47 | integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== 48 | 49 | adm-zip@^0.4.9: 50 | version "0.4.16" 51 | resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" 52 | integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== 53 | 54 | agent-base@^4.3.0: 55 | version "4.3.0" 56 | resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz" 57 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 58 | dependencies: 59 | es6-promisify "^5.0.0" 60 | 61 | ajv@^6.12.3: 62 | version "6.12.6" 63 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 64 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 65 | dependencies: 66 | fast-deep-equal "^3.1.1" 67 | fast-json-stable-stringify "^2.0.0" 68 | json-schema-traverse "^0.4.1" 69 | uri-js "^4.2.2" 70 | 71 | ansi-regex@^2.0.0: 72 | version "2.1.1" 73 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 74 | integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 75 | 76 | ansi-regex@^5.0.1: 77 | version "5.0.1" 78 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 79 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 80 | 81 | ansi-styles@^2.2.1: 82 | version "2.2.1" 83 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" 84 | integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== 85 | 86 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 87 | version "4.3.0" 88 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 89 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 90 | dependencies: 91 | color-convert "^2.0.1" 92 | 93 | anymatch@^2.0.0: 94 | version "2.0.0" 95 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" 96 | integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== 97 | dependencies: 98 | micromatch "^3.1.4" 99 | normalize-path "^2.1.1" 100 | 101 | arr-diff@^4.0.0: 102 | version "4.0.0" 103 | resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" 104 | integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== 105 | 106 | arr-flatten@^1.1.0: 107 | version "1.1.0" 108 | resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" 109 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 110 | 111 | arr-union@^3.1.0: 112 | version "3.1.0" 113 | resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" 114 | integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== 115 | 116 | array-union@^1.0.1: 117 | version "1.0.2" 118 | resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" 119 | integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== 120 | dependencies: 121 | array-uniq "^1.0.1" 122 | 123 | array-uniq@^1.0.1: 124 | version "1.0.3" 125 | resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" 126 | integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== 127 | 128 | array-unique@^0.3.2: 129 | version "0.3.2" 130 | resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" 131 | integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== 132 | 133 | arrify@^1.0.0: 134 | version "1.0.1" 135 | resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" 136 | integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== 137 | 138 | asn1@~0.2.3: 139 | version "0.2.6" 140 | resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" 141 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 142 | dependencies: 143 | safer-buffer "~2.1.0" 144 | 145 | assert-plus@^1.0.0, assert-plus@1.0.0: 146 | version "1.0.0" 147 | resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" 148 | integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== 149 | 150 | assign-symbols@^1.0.0: 151 | version "1.0.0" 152 | resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" 153 | integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== 154 | 155 | async-each@^1.0.1: 156 | version "1.0.3" 157 | resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" 158 | integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== 159 | 160 | async@^1.5.2: 161 | version "1.5.2" 162 | resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" 163 | integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== 164 | 165 | asynckit@^0.4.0: 166 | version "0.4.0" 167 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 168 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 169 | 170 | atob@^2.1.2: 171 | version "2.1.2" 172 | resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" 173 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 174 | 175 | aws-sign2@~0.7.0: 176 | version "0.7.0" 177 | resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" 178 | integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== 179 | 180 | aws4@^1.8.0: 181 | version "1.11.0" 182 | resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" 183 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 184 | 185 | axios@^0.21.1: 186 | version "0.21.4" 187 | resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" 188 | integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== 189 | dependencies: 190 | follow-redirects "^1.14.0" 191 | 192 | balanced-match@^1.0.0: 193 | version "1.0.2" 194 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 195 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 196 | 197 | base@^0.11.1: 198 | version "0.11.2" 199 | resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" 200 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 201 | dependencies: 202 | cache-base "^1.0.1" 203 | class-utils "^0.3.5" 204 | component-emitter "^1.2.1" 205 | define-property "^1.0.0" 206 | isobject "^3.0.1" 207 | mixin-deep "^1.2.0" 208 | pascalcase "^0.1.1" 209 | 210 | bcrypt-pbkdf@^1.0.0: 211 | version "1.0.2" 212 | resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" 213 | integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== 214 | dependencies: 215 | tweetnacl "^0.14.3" 216 | 217 | binary-extensions@^1.0.0: 218 | version "1.13.1" 219 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" 220 | integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== 221 | 222 | bindings@^1.5.0: 223 | version "1.5.0" 224 | resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" 225 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 226 | dependencies: 227 | file-uri-to-path "1.0.0" 228 | 229 | blocking-proxy@^1.0.0: 230 | version "1.0.1" 231 | resolved "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz" 232 | integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== 233 | dependencies: 234 | minimist "^1.2.0" 235 | 236 | brace-expansion@^1.1.7: 237 | version "1.1.11" 238 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 239 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 240 | dependencies: 241 | balanced-match "^1.0.0" 242 | concat-map "0.0.1" 243 | 244 | braces@^2.3.1, braces@^2.3.2: 245 | version "2.3.2" 246 | resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" 247 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 248 | dependencies: 249 | arr-flatten "^1.1.0" 250 | array-unique "^0.3.2" 251 | extend-shallow "^2.0.1" 252 | fill-range "^4.0.0" 253 | isobject "^3.0.1" 254 | repeat-element "^1.1.2" 255 | snapdragon "^0.8.1" 256 | snapdragon-node "^2.0.1" 257 | split-string "^3.0.2" 258 | to-regex "^3.0.1" 259 | 260 | browserstack@^1.5.1: 261 | version "1.6.1" 262 | resolved "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz" 263 | integrity sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw== 264 | dependencies: 265 | https-proxy-agent "^2.2.1" 266 | 267 | cache-base@^1.0.1: 268 | version "1.0.1" 269 | resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" 270 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 271 | dependencies: 272 | collection-visit "^1.0.0" 273 | component-emitter "^1.2.1" 274 | get-value "^2.0.6" 275 | has-value "^1.0.0" 276 | isobject "^3.0.1" 277 | set-value "^2.0.0" 278 | to-object-path "^0.3.0" 279 | union-value "^1.0.0" 280 | unset-value "^1.0.0" 281 | 282 | camelcase@^5.0.0: 283 | version "5.3.1" 284 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" 285 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 286 | 287 | caseless@~0.12.0: 288 | version "0.12.0" 289 | resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" 290 | integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== 291 | 292 | chalk@^1.1.1: 293 | version "1.1.3" 294 | resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" 295 | integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== 296 | dependencies: 297 | ansi-styles "^2.2.1" 298 | escape-string-regexp "^1.0.2" 299 | has-ansi "^2.0.0" 300 | strip-ansi "^3.0.0" 301 | supports-color "^2.0.0" 302 | 303 | chalk@^1.1.3: 304 | version "1.1.3" 305 | resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" 306 | integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== 307 | dependencies: 308 | ansi-styles "^2.2.1" 309 | escape-string-regexp "^1.0.2" 310 | has-ansi "^2.0.0" 311 | strip-ansi "^3.0.0" 312 | supports-color "^2.0.0" 313 | 314 | chalk@^4.0.0: 315 | version "4.1.2" 316 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 317 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 318 | dependencies: 319 | ansi-styles "^4.1.0" 320 | supports-color "^7.1.0" 321 | 322 | chokidar@^2.1.8: 323 | version "2.1.8" 324 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" 325 | integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== 326 | dependencies: 327 | anymatch "^2.0.0" 328 | async-each "^1.0.1" 329 | braces "^2.3.2" 330 | glob-parent "^3.1.0" 331 | inherits "^2.0.3" 332 | is-binary-path "^1.0.0" 333 | is-glob "^4.0.0" 334 | normalize-path "^3.0.0" 335 | path-is-absolute "^1.0.0" 336 | readdirp "^2.2.1" 337 | upath "^1.1.1" 338 | optionalDependencies: 339 | fsevents "^1.2.7" 340 | 341 | class-utils@^0.3.5: 342 | version "0.3.6" 343 | resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" 344 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 345 | dependencies: 346 | arr-union "^3.1.0" 347 | define-property "^0.2.5" 348 | isobject "^3.0.0" 349 | static-extend "^0.1.1" 350 | 351 | cliui@^6.0.0: 352 | version "6.0.0" 353 | resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" 354 | integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== 355 | dependencies: 356 | string-width "^4.2.0" 357 | strip-ansi "^6.0.0" 358 | wrap-ansi "^6.2.0" 359 | 360 | collection-visit@^1.0.0: 361 | version "1.0.0" 362 | resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" 363 | integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== 364 | dependencies: 365 | map-visit "^1.0.0" 366 | object-visit "^1.0.0" 367 | 368 | color-convert@^2.0.1: 369 | version "2.0.1" 370 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 371 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 372 | dependencies: 373 | color-name "~1.1.4" 374 | 375 | color-name@~1.1.4: 376 | version "1.1.4" 377 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 378 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 379 | 380 | combined-stream@^1.0.6, combined-stream@~1.0.6: 381 | version "1.0.8" 382 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" 383 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 384 | dependencies: 385 | delayed-stream "~1.0.0" 386 | 387 | commander@^5.1.0: 388 | version "5.1.0" 389 | resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" 390 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 391 | 392 | component-emitter@^1.2.1: 393 | version "1.3.0" 394 | resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" 395 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 396 | 397 | concat-map@0.0.1: 398 | version "0.0.1" 399 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 400 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 401 | 402 | copy-descriptor@^0.1.0: 403 | version "0.1.1" 404 | resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" 405 | integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== 406 | 407 | core-util-is@~1.0.0: 408 | version "1.0.3" 409 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" 410 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 411 | 412 | core-util-is@1.0.2: 413 | version "1.0.2" 414 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 415 | integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== 416 | 417 | dashdash@^1.12.0: 418 | version "1.14.1" 419 | resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" 420 | integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== 421 | dependencies: 422 | assert-plus "^1.0.0" 423 | 424 | debug@^2.2.0: 425 | version "2.6.9" 426 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 427 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 428 | dependencies: 429 | ms "2.0.0" 430 | 431 | debug@^2.3.3: 432 | version "2.6.9" 433 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 434 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 435 | dependencies: 436 | ms "2.0.0" 437 | 438 | debug@^3.1.0: 439 | version "3.2.7" 440 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 441 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 442 | dependencies: 443 | ms "^2.1.1" 444 | 445 | debug@^4.1.1: 446 | version "4.3.4" 447 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 448 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 449 | dependencies: 450 | ms "2.1.2" 451 | 452 | decamelize@^1.2.0: 453 | version "1.2.0" 454 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" 455 | integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== 456 | 457 | decode-uri-component@^0.2.0: 458 | version "0.2.0" 459 | resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" 460 | integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== 461 | 462 | define-property@^0.2.5: 463 | version "0.2.5" 464 | resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 465 | integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== 466 | dependencies: 467 | is-descriptor "^0.1.0" 468 | 469 | define-property@^1.0.0: 470 | version "1.0.0" 471 | resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" 472 | integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== 473 | dependencies: 474 | is-descriptor "^1.0.0" 475 | 476 | define-property@^2.0.2: 477 | version "2.0.2" 478 | resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" 479 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 480 | dependencies: 481 | is-descriptor "^1.0.2" 482 | isobject "^3.0.1" 483 | 484 | del@^2.2.0: 485 | version "2.2.2" 486 | resolved "https://registry.npmjs.org/del/-/del-2.2.2.tgz" 487 | integrity sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ== 488 | dependencies: 489 | globby "^5.0.0" 490 | is-path-cwd "^1.0.0" 491 | is-path-in-cwd "^1.0.0" 492 | object-assign "^4.0.1" 493 | pify "^2.0.0" 494 | pinkie-promise "^2.0.0" 495 | rimraf "^2.2.8" 496 | 497 | delayed-stream@~1.0.0: 498 | version "1.0.0" 499 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 500 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 501 | 502 | dotenv@^5.0.1: 503 | version "5.0.1" 504 | resolved "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz" 505 | integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== 506 | 507 | duplexer@~0.1.1: 508 | version "0.1.2" 509 | resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" 510 | integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== 511 | 512 | ecc-jsbn@~0.1.1: 513 | version "0.1.2" 514 | resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" 515 | integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== 516 | dependencies: 517 | jsbn "~0.1.0" 518 | safer-buffer "^2.1.0" 519 | 520 | emoji-regex@^8.0.0: 521 | version "8.0.0" 522 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 523 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 524 | 525 | es6-promise@^4.0.3: 526 | version "4.2.8" 527 | resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" 528 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 529 | 530 | es6-promisify@^5.0.0: 531 | version "5.0.0" 532 | resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" 533 | integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== 534 | dependencies: 535 | es6-promise "^4.0.3" 536 | 537 | escape-string-regexp@^1.0.2: 538 | version "1.0.5" 539 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 540 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 541 | 542 | event-stream@=3.3.4: 543 | version "3.3.4" 544 | resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz" 545 | integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== 546 | dependencies: 547 | duplexer "~0.1.1" 548 | from "~0" 549 | map-stream "~0.1.0" 550 | pause-stream "0.0.11" 551 | split "0.3" 552 | stream-combiner "~0.0.4" 553 | through "~2.3.1" 554 | 555 | eventemitter2@^6.4.3: 556 | version "6.4.7" 557 | resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz" 558 | integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== 559 | 560 | exit@^0.1.2: 561 | version "0.1.2" 562 | resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" 563 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 564 | 565 | expand-brackets@^2.1.4: 566 | version "2.1.4" 567 | resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" 568 | integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== 569 | dependencies: 570 | debug "^2.3.3" 571 | define-property "^0.2.5" 572 | extend-shallow "^2.0.1" 573 | posix-character-classes "^0.1.0" 574 | regex-not "^1.0.0" 575 | snapdragon "^0.8.1" 576 | to-regex "^3.0.1" 577 | 578 | extend-shallow@^2.0.1: 579 | version "2.0.1" 580 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 581 | integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== 582 | dependencies: 583 | is-extendable "^0.1.0" 584 | 585 | extend-shallow@^3.0.0: 586 | version "3.0.2" 587 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" 588 | integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== 589 | dependencies: 590 | assign-symbols "^1.0.0" 591 | is-extendable "^1.0.1" 592 | 593 | extend-shallow@^3.0.2: 594 | version "3.0.2" 595 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" 596 | integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== 597 | dependencies: 598 | assign-symbols "^1.0.0" 599 | is-extendable "^1.0.1" 600 | 601 | extend@~3.0.2: 602 | version "3.0.2" 603 | resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" 604 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 605 | 606 | extglob@^2.0.4: 607 | version "2.0.4" 608 | resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" 609 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 610 | dependencies: 611 | array-unique "^0.3.2" 612 | define-property "^1.0.0" 613 | expand-brackets "^2.1.4" 614 | extend-shallow "^2.0.1" 615 | fragment-cache "^0.2.1" 616 | regex-not "^1.0.0" 617 | snapdragon "^0.8.1" 618 | to-regex "^3.0.1" 619 | 620 | extsprintf@^1.2.0, extsprintf@1.3.0: 621 | version "1.3.0" 622 | resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" 623 | integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== 624 | 625 | fast-deep-equal@^3.1.1: 626 | version "3.1.3" 627 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 628 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 629 | 630 | fast-json-stable-stringify@^2.0.0: 631 | version "2.1.0" 632 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 633 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 634 | 635 | file-uri-to-path@1.0.0: 636 | version "1.0.0" 637 | resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" 638 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 639 | 640 | fill-range@^4.0.0: 641 | version "4.0.0" 642 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" 643 | integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== 644 | dependencies: 645 | extend-shallow "^2.0.1" 646 | is-number "^3.0.0" 647 | repeat-string "^1.6.1" 648 | to-regex-range "^2.1.0" 649 | 650 | find-process@^1.1.0: 651 | version "1.4.7" 652 | resolved "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz" 653 | integrity sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg== 654 | dependencies: 655 | chalk "^4.0.0" 656 | commander "^5.1.0" 657 | debug "^4.1.1" 658 | 659 | find-up@^4.1.0: 660 | version "4.1.0" 661 | resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" 662 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 663 | dependencies: 664 | locate-path "^5.0.0" 665 | path-exists "^4.0.0" 666 | 667 | follow-redirects@^1.14.0: 668 | version "1.15.1" 669 | resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" 670 | integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== 671 | 672 | for-in@^1.0.2: 673 | version "1.0.2" 674 | resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 675 | integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== 676 | 677 | forever-agent@~0.6.1: 678 | version "0.6.1" 679 | resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" 680 | integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== 681 | 682 | forever-monitor@^3.0.3: 683 | version "3.0.3" 684 | resolved "https://registry.npmjs.org/forever-monitor/-/forever-monitor-3.0.3.tgz" 685 | integrity sha512-7YGDo0UlbMy++6G3lzncWISDaT5CVp+yPVAkZ7FDFF0ec+0HKgBOWOhPGKpMF0hjcm3Ps/HbtrETrQLYREZ7YQ== 686 | dependencies: 687 | async "^1.5.2" 688 | chokidar "^2.1.8" 689 | eventemitter2 "^6.4.3" 690 | minimatch "^3.0.4" 691 | ps-tree "^1.2.0" 692 | 693 | form-data@~2.3.2: 694 | version "2.3.3" 695 | resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" 696 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 697 | dependencies: 698 | asynckit "^0.4.0" 699 | combined-stream "^1.0.6" 700 | mime-types "^2.1.12" 701 | 702 | fragment-cache@^0.2.1: 703 | version "0.2.1" 704 | resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" 705 | integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== 706 | dependencies: 707 | map-cache "^0.2.2" 708 | 709 | from@~0: 710 | version "0.1.7" 711 | resolved "https://registry.npmjs.org/from/-/from-0.1.7.tgz" 712 | integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== 713 | 714 | fs.realpath@^1.0.0: 715 | version "1.0.0" 716 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 717 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 718 | 719 | fsevents@^1.2.7: 720 | version "1.2.13" 721 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" 722 | integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== 723 | dependencies: 724 | bindings "^1.5.0" 725 | nan "^2.12.1" 726 | 727 | get-caller-file@^2.0.1: 728 | version "2.0.5" 729 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 730 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 731 | 732 | get-value@^2.0.3, get-value@^2.0.6: 733 | version "2.0.6" 734 | resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" 735 | integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== 736 | 737 | getpass@^0.1.1: 738 | version "0.1.7" 739 | resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" 740 | integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== 741 | dependencies: 742 | assert-plus "^1.0.0" 743 | 744 | glob-parent@^3.1.0: 745 | version "3.1.0" 746 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" 747 | integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== 748 | dependencies: 749 | is-glob "^3.1.0" 750 | path-dirname "^1.0.0" 751 | 752 | glob@^7.0.3, glob@^7.0.6, glob@^7.1.3, glob@^7.1.6: 753 | version "7.2.3" 754 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 755 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 756 | dependencies: 757 | fs.realpath "^1.0.0" 758 | inflight "^1.0.4" 759 | inherits "2" 760 | minimatch "^3.1.1" 761 | once "^1.3.0" 762 | path-is-absolute "^1.0.0" 763 | 764 | globby@^5.0.0: 765 | version "5.0.0" 766 | resolved "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz" 767 | integrity sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ== 768 | dependencies: 769 | array-union "^1.0.1" 770 | arrify "^1.0.0" 771 | glob "^7.0.3" 772 | object-assign "^4.0.1" 773 | pify "^2.0.0" 774 | pinkie-promise "^2.0.0" 775 | 776 | graceful-fs@^4.1.11: 777 | version "4.2.10" 778 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" 779 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 780 | 781 | har-schema@^2.0.0: 782 | version "2.0.0" 783 | resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" 784 | integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== 785 | 786 | har-validator@~5.1.3: 787 | version "5.1.5" 788 | resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" 789 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 790 | dependencies: 791 | ajv "^6.12.3" 792 | har-schema "^2.0.0" 793 | 794 | has-ansi@^2.0.0: 795 | version "2.0.0" 796 | resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" 797 | integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== 798 | dependencies: 799 | ansi-regex "^2.0.0" 800 | 801 | has-flag@^4.0.0: 802 | version "4.0.0" 803 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 804 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 805 | 806 | has-value@^0.3.1: 807 | version "0.3.1" 808 | resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" 809 | integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== 810 | dependencies: 811 | get-value "^2.0.3" 812 | has-values "^0.1.4" 813 | isobject "^2.0.0" 814 | 815 | has-value@^1.0.0: 816 | version "1.0.0" 817 | resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" 818 | integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== 819 | dependencies: 820 | get-value "^2.0.6" 821 | has-values "^1.0.0" 822 | isobject "^3.0.0" 823 | 824 | has-values@^0.1.4: 825 | version "0.1.4" 826 | resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" 827 | integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== 828 | 829 | has-values@^1.0.0: 830 | version "1.0.0" 831 | resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" 832 | integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== 833 | dependencies: 834 | is-number "^3.0.0" 835 | kind-of "^4.0.0" 836 | 837 | http-signature@~1.2.0: 838 | version "1.2.0" 839 | resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" 840 | integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== 841 | dependencies: 842 | assert-plus "^1.0.0" 843 | jsprim "^1.2.2" 844 | sshpk "^1.7.0" 845 | 846 | https-proxy-agent@^2.2.1: 847 | version "2.2.4" 848 | resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" 849 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 850 | dependencies: 851 | agent-base "^4.3.0" 852 | debug "^3.1.0" 853 | 854 | immediate@~3.0.5: 855 | version "3.0.6" 856 | resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" 857 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== 858 | 859 | inflight@^1.0.4: 860 | version "1.0.6" 861 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 862 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 863 | dependencies: 864 | once "^1.3.0" 865 | wrappy "1" 866 | 867 | inherits@^2.0.3, inherits@~2.0.3, inherits@2: 868 | version "2.0.4" 869 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 870 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 871 | 872 | ini@^1.3.4: 873 | version "1.3.8" 874 | resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" 875 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 876 | 877 | is-accessor-descriptor@^0.1.6: 878 | version "0.1.6" 879 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" 880 | integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== 881 | dependencies: 882 | kind-of "^3.0.2" 883 | 884 | is-accessor-descriptor@^1.0.0: 885 | version "1.0.0" 886 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" 887 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 888 | dependencies: 889 | kind-of "^6.0.0" 890 | 891 | is-binary-path@^1.0.0: 892 | version "1.0.1" 893 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" 894 | integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== 895 | dependencies: 896 | binary-extensions "^1.0.0" 897 | 898 | is-buffer@^1.1.5: 899 | version "1.1.6" 900 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 901 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 902 | 903 | is-data-descriptor@^0.1.4: 904 | version "0.1.4" 905 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" 906 | integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== 907 | dependencies: 908 | kind-of "^3.0.2" 909 | 910 | is-data-descriptor@^1.0.0: 911 | version "1.0.0" 912 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" 913 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 914 | dependencies: 915 | kind-of "^6.0.0" 916 | 917 | is-descriptor@^0.1.0: 918 | version "0.1.6" 919 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" 920 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 921 | dependencies: 922 | is-accessor-descriptor "^0.1.6" 923 | is-data-descriptor "^0.1.4" 924 | kind-of "^5.0.0" 925 | 926 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 927 | version "1.0.2" 928 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" 929 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 930 | dependencies: 931 | is-accessor-descriptor "^1.0.0" 932 | is-data-descriptor "^1.0.0" 933 | kind-of "^6.0.2" 934 | 935 | is-extendable@^0.1.0, is-extendable@^0.1.1: 936 | version "0.1.1" 937 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 938 | integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== 939 | 940 | is-extendable@^1.0.1: 941 | version "1.0.1" 942 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" 943 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 944 | dependencies: 945 | is-plain-object "^2.0.4" 946 | 947 | is-extglob@^2.1.0, is-extglob@^2.1.1: 948 | version "2.1.1" 949 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 950 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 951 | 952 | is-fullwidth-code-point@^3.0.0: 953 | version "3.0.0" 954 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 955 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 956 | 957 | is-glob@^3.1.0: 958 | version "3.1.0" 959 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" 960 | integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== 961 | dependencies: 962 | is-extglob "^2.1.0" 963 | 964 | is-glob@^4.0.0: 965 | version "4.0.3" 966 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 967 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 968 | dependencies: 969 | is-extglob "^2.1.1" 970 | 971 | is-number@^3.0.0: 972 | version "3.0.0" 973 | resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" 974 | integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== 975 | dependencies: 976 | kind-of "^3.0.2" 977 | 978 | is-path-cwd@^1.0.0: 979 | version "1.0.0" 980 | resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" 981 | integrity sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== 982 | 983 | is-path-in-cwd@^1.0.0: 984 | version "1.0.1" 985 | resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz" 986 | integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== 987 | dependencies: 988 | is-path-inside "^1.0.0" 989 | 990 | is-path-inside@^1.0.0: 991 | version "1.0.1" 992 | resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz" 993 | integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== 994 | dependencies: 995 | path-is-inside "^1.0.1" 996 | 997 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 998 | version "2.0.4" 999 | resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" 1000 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1001 | dependencies: 1002 | isobject "^3.0.1" 1003 | 1004 | is-typedarray@~1.0.0: 1005 | version "1.0.0" 1006 | resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" 1007 | integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== 1008 | 1009 | is-windows@^1.0.2: 1010 | version "1.0.2" 1011 | resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" 1012 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1013 | 1014 | isarray@~1.0.0, isarray@1.0.0: 1015 | version "1.0.0" 1016 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1017 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1018 | 1019 | isobject@^2.0.0: 1020 | version "2.1.0" 1021 | resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 1022 | integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== 1023 | dependencies: 1024 | isarray "1.0.0" 1025 | 1026 | isobject@^3.0.0, isobject@^3.0.1: 1027 | version "3.0.1" 1028 | resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1029 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1030 | 1031 | isstream@~0.1.2: 1032 | version "0.1.2" 1033 | resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" 1034 | integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== 1035 | 1036 | jasmine-core@~2.8.0: 1037 | version "2.8.0" 1038 | resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz" 1039 | integrity sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ== 1040 | 1041 | jasmine-core@~3.99.0: 1042 | version "3.99.1" 1043 | resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz" 1044 | integrity sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg== 1045 | 1046 | jasmine-reporters@^2.5: 1047 | version "2.5.0" 1048 | resolved "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.5.0.tgz" 1049 | integrity sha512-J69peyTR8j6SzvIPP6aO1Y00wwCqXuIvhwTYvE/di14roCf6X3wDZ4/cKGZ2fGgufjhP2FKjpgrUIKjwau4e/Q== 1050 | dependencies: 1051 | "@xmldom/xmldom" "^0.7.3" 1052 | mkdirp "^1.0.4" 1053 | 1054 | jasmine@^3.0.0: 1055 | version "3.99.0" 1056 | resolved "https://registry.npmjs.org/jasmine/-/jasmine-3.99.0.tgz" 1057 | integrity sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw== 1058 | dependencies: 1059 | glob "^7.1.6" 1060 | jasmine-core "~3.99.0" 1061 | 1062 | jasmine@2.8.0: 1063 | version "2.8.0" 1064 | resolved "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz" 1065 | integrity sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw== 1066 | dependencies: 1067 | exit "^0.1.2" 1068 | glob "^7.0.6" 1069 | jasmine-core "~2.8.0" 1070 | 1071 | jasminewd2@^2.1.0: 1072 | version "2.2.0" 1073 | resolved "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz" 1074 | integrity sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg== 1075 | 1076 | joi@^17.3.0: 1077 | version "17.6.0" 1078 | resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz" 1079 | integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== 1080 | dependencies: 1081 | "@hapi/hoek" "^9.0.0" 1082 | "@hapi/topo" "^5.0.0" 1083 | "@sideway/address" "^4.1.3" 1084 | "@sideway/formula" "^3.0.0" 1085 | "@sideway/pinpoint" "^2.0.0" 1086 | 1087 | jsbn@~0.1.0: 1088 | version "0.1.1" 1089 | resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" 1090 | integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== 1091 | 1092 | json-schema-traverse@^0.4.1: 1093 | version "0.4.1" 1094 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 1095 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1096 | 1097 | json-schema@0.4.0: 1098 | version "0.4.0" 1099 | resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" 1100 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 1101 | 1102 | json-stringify-safe@~5.0.1: 1103 | version "5.0.1" 1104 | resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 1105 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 1106 | 1107 | jsprim@^1.2.2: 1108 | version "1.4.2" 1109 | resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" 1110 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 1111 | dependencies: 1112 | assert-plus "1.0.0" 1113 | extsprintf "1.3.0" 1114 | json-schema "0.4.0" 1115 | verror "1.10.0" 1116 | 1117 | jszip@^3.1.3: 1118 | version "3.10.1" 1119 | resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" 1120 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 1121 | dependencies: 1122 | lie "~3.3.0" 1123 | pako "~1.0.2" 1124 | readable-stream "~2.3.6" 1125 | setimmediate "^1.0.5" 1126 | 1127 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1128 | version "3.2.2" 1129 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1130 | integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== 1131 | dependencies: 1132 | is-buffer "^1.1.5" 1133 | 1134 | kind-of@^4.0.0: 1135 | version "4.0.0" 1136 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" 1137 | integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== 1138 | dependencies: 1139 | is-buffer "^1.1.5" 1140 | 1141 | kind-of@^5.0.0: 1142 | version "5.1.0" 1143 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" 1144 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1145 | 1146 | kind-of@^6.0.0: 1147 | version "6.0.3" 1148 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" 1149 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1150 | 1151 | kind-of@^6.0.2: 1152 | version "6.0.3" 1153 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" 1154 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1155 | 1156 | lie@~3.3.0: 1157 | version "3.3.0" 1158 | resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" 1159 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1160 | dependencies: 1161 | immediate "~3.0.5" 1162 | 1163 | locate-path@^5.0.0: 1164 | version "5.0.0" 1165 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" 1166 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1167 | dependencies: 1168 | p-locate "^4.1.0" 1169 | 1170 | lodash@^4.17.21: 1171 | version "4.17.21" 1172 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1173 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1174 | 1175 | map-cache@^0.2.2: 1176 | version "0.2.2" 1177 | resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" 1178 | integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== 1179 | 1180 | map-stream@~0.1.0: 1181 | version "0.1.0" 1182 | resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz" 1183 | integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== 1184 | 1185 | map-visit@^1.0.0: 1186 | version "1.0.0" 1187 | resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" 1188 | integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== 1189 | dependencies: 1190 | object-visit "^1.0.0" 1191 | 1192 | micromatch@^3.1.10, micromatch@^3.1.4: 1193 | version "3.1.10" 1194 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" 1195 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 1196 | dependencies: 1197 | arr-diff "^4.0.0" 1198 | array-unique "^0.3.2" 1199 | braces "^2.3.1" 1200 | define-property "^2.0.2" 1201 | extend-shallow "^3.0.2" 1202 | extglob "^2.0.4" 1203 | fragment-cache "^0.2.1" 1204 | kind-of "^6.0.2" 1205 | nanomatch "^1.2.9" 1206 | object.pick "^1.3.0" 1207 | regex-not "^1.0.0" 1208 | snapdragon "^0.8.1" 1209 | to-regex "^3.0.2" 1210 | 1211 | mime-db@1.52.0: 1212 | version "1.52.0" 1213 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1214 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1215 | 1216 | mime-types@^2.1.12, mime-types@~2.1.19: 1217 | version "2.1.35" 1218 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1219 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1220 | dependencies: 1221 | mime-db "1.52.0" 1222 | 1223 | minimatch@^3.0.4, minimatch@^3.1.1: 1224 | version "3.1.2" 1225 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1226 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1227 | dependencies: 1228 | brace-expansion "^1.1.7" 1229 | 1230 | minimist@^1.2.0, minimist@^1.2.5: 1231 | version "1.2.6" 1232 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" 1233 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1234 | 1235 | mixin-deep@^1.2.0: 1236 | version "1.3.2" 1237 | resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" 1238 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 1239 | dependencies: 1240 | for-in "^1.0.2" 1241 | is-extendable "^1.0.1" 1242 | 1243 | mkdirp@^1.0.4: 1244 | version "1.0.4" 1245 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" 1246 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1247 | 1248 | ms@^2.1.1, ms@2.1.2: 1249 | version "2.1.2" 1250 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1251 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1252 | 1253 | ms@2.0.0: 1254 | version "2.0.0" 1255 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1256 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1257 | 1258 | nan@^2.12.1: 1259 | version "2.16.0" 1260 | resolved "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz" 1261 | integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== 1262 | 1263 | nanomatch@^1.2.9: 1264 | version "1.2.13" 1265 | resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" 1266 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 1267 | dependencies: 1268 | arr-diff "^4.0.0" 1269 | array-unique "^0.3.2" 1270 | define-property "^2.0.2" 1271 | extend-shallow "^3.0.2" 1272 | fragment-cache "^0.2.1" 1273 | is-windows "^1.0.2" 1274 | kind-of "^6.0.2" 1275 | object.pick "^1.3.0" 1276 | regex-not "^1.0.0" 1277 | snapdragon "^0.8.1" 1278 | to-regex "^3.0.1" 1279 | 1280 | node-cmd@^3.0.0: 1281 | version "3.0.0" 1282 | resolved "https://registry.npmjs.org/node-cmd/-/node-cmd-3.0.0.tgz" 1283 | integrity sha512-SBvtm39iEkhEEDbUowR0O2YVaqpbD2nRvQ3fxXP/Tn1FgRpZAaUb8yKeEtFulBIv+xTHDodOKkj4EXIBANj+AQ== 1284 | 1285 | normalize-path@^2.1.1: 1286 | version "2.1.1" 1287 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" 1288 | integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== 1289 | dependencies: 1290 | remove-trailing-separator "^1.0.1" 1291 | 1292 | normalize-path@^3.0.0: 1293 | version "3.0.0" 1294 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1295 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1296 | 1297 | oauth-sign@~0.9.0: 1298 | version "0.9.0" 1299 | resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" 1300 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1301 | 1302 | object-assign@^4.0.1: 1303 | version "4.1.1" 1304 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1305 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1306 | 1307 | object-copy@^0.1.0: 1308 | version "0.1.0" 1309 | resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" 1310 | integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== 1311 | dependencies: 1312 | copy-descriptor "^0.1.0" 1313 | define-property "^0.2.5" 1314 | kind-of "^3.0.3" 1315 | 1316 | object-visit@^1.0.0: 1317 | version "1.0.1" 1318 | resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" 1319 | integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== 1320 | dependencies: 1321 | isobject "^3.0.0" 1322 | 1323 | object.pick@^1.3.0: 1324 | version "1.3.0" 1325 | resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" 1326 | integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== 1327 | dependencies: 1328 | isobject "^3.0.1" 1329 | 1330 | once@^1.3.0: 1331 | version "1.4.0" 1332 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1333 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1334 | dependencies: 1335 | wrappy "1" 1336 | 1337 | os-tmpdir@~1.0.1: 1338 | version "1.0.2" 1339 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 1340 | integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== 1341 | 1342 | p-limit@^2.2.0: 1343 | version "2.3.0" 1344 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" 1345 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1346 | dependencies: 1347 | p-try "^2.0.0" 1348 | 1349 | p-locate@^4.1.0: 1350 | version "4.1.0" 1351 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" 1352 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1353 | dependencies: 1354 | p-limit "^2.2.0" 1355 | 1356 | p-try@^2.0.0: 1357 | version "2.2.0" 1358 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" 1359 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1360 | 1361 | pako@~1.0.2: 1362 | version "1.0.11" 1363 | resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" 1364 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1365 | 1366 | pascalcase@^0.1.1: 1367 | version "0.1.1" 1368 | resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" 1369 | integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== 1370 | 1371 | path-dirname@^1.0.0: 1372 | version "1.0.2" 1373 | resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" 1374 | integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== 1375 | 1376 | path-exists@^4.0.0: 1377 | version "4.0.0" 1378 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 1379 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1380 | 1381 | path-is-absolute@^1.0.0: 1382 | version "1.0.1" 1383 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1384 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1385 | 1386 | path-is-inside@^1.0.1: 1387 | version "1.0.2" 1388 | resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" 1389 | integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== 1390 | 1391 | pause-stream@0.0.11: 1392 | version "0.0.11" 1393 | resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" 1394 | integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== 1395 | dependencies: 1396 | through "~2.3" 1397 | 1398 | performance-now@^2.1.0: 1399 | version "2.1.0" 1400 | resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" 1401 | integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== 1402 | 1403 | pify@^2.0.0: 1404 | version "2.3.0" 1405 | resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" 1406 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 1407 | 1408 | pinkie-promise@^2.0.0: 1409 | version "2.0.1" 1410 | resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" 1411 | integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== 1412 | dependencies: 1413 | pinkie "^2.0.0" 1414 | 1415 | pinkie@^2.0.0: 1416 | version "2.0.4" 1417 | resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" 1418 | integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== 1419 | 1420 | platform@^1.3.5: 1421 | version "1.3.6" 1422 | resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" 1423 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== 1424 | 1425 | posix-character-classes@^0.1.0: 1426 | version "0.1.1" 1427 | resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" 1428 | integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== 1429 | 1430 | process-nextick-args@~2.0.0: 1431 | version "2.0.1" 1432 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1433 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1434 | 1435 | protractor@^7.0.0: 1436 | version "7.0.0" 1437 | resolved "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz" 1438 | integrity sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw== 1439 | dependencies: 1440 | "@types/q" "^0.0.32" 1441 | "@types/selenium-webdriver" "^3.0.0" 1442 | blocking-proxy "^1.0.0" 1443 | browserstack "^1.5.1" 1444 | chalk "^1.1.3" 1445 | glob "^7.0.3" 1446 | jasmine "2.8.0" 1447 | jasminewd2 "^2.1.0" 1448 | q "1.4.1" 1449 | saucelabs "^1.5.0" 1450 | selenium-webdriver "3.6.0" 1451 | source-map-support "~0.4.0" 1452 | webdriver-js-extender "2.1.0" 1453 | webdriver-manager "^12.1.7" 1454 | yargs "^15.3.1" 1455 | 1456 | ps-tree@^1.2.0: 1457 | version "1.2.0" 1458 | resolved "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz" 1459 | integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== 1460 | dependencies: 1461 | event-stream "=3.3.4" 1462 | 1463 | psl@^1.1.28: 1464 | version "1.9.0" 1465 | resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" 1466 | integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== 1467 | 1468 | punycode@^2.1.0, punycode@^2.1.1: 1469 | version "2.1.1" 1470 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 1471 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1472 | 1473 | q@^1.4.1, q@1.4.1: 1474 | version "1.4.1" 1475 | resolved "https://registry.npmjs.org/q/-/q-1.4.1.tgz" 1476 | integrity sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg== 1477 | 1478 | qs@~6.5.2: 1479 | version "6.5.3" 1480 | resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" 1481 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 1482 | 1483 | readable-stream@^2.0.2, readable-stream@~2.3.6: 1484 | version "2.3.7" 1485 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 1486 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1487 | dependencies: 1488 | core-util-is "~1.0.0" 1489 | inherits "~2.0.3" 1490 | isarray "~1.0.0" 1491 | process-nextick-args "~2.0.0" 1492 | safe-buffer "~5.1.1" 1493 | string_decoder "~1.1.1" 1494 | util-deprecate "~1.0.1" 1495 | 1496 | readdirp@^2.2.1: 1497 | version "2.2.1" 1498 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" 1499 | integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== 1500 | dependencies: 1501 | graceful-fs "^4.1.11" 1502 | micromatch "^3.1.10" 1503 | readable-stream "^2.0.2" 1504 | 1505 | regex-not@^1.0.0, regex-not@^1.0.2: 1506 | version "1.0.2" 1507 | resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" 1508 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 1509 | dependencies: 1510 | extend-shallow "^3.0.2" 1511 | safe-regex "^1.1.0" 1512 | 1513 | remove-trailing-separator@^1.0.1: 1514 | version "1.1.0" 1515 | resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" 1516 | integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== 1517 | 1518 | repeat-element@^1.1.2: 1519 | version "1.1.4" 1520 | resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" 1521 | integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== 1522 | 1523 | repeat-string@^1.6.1: 1524 | version "1.6.1" 1525 | resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 1526 | integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== 1527 | 1528 | request@^2.87.0: 1529 | version "2.88.2" 1530 | resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" 1531 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 1532 | dependencies: 1533 | aws-sign2 "~0.7.0" 1534 | aws4 "^1.8.0" 1535 | caseless "~0.12.0" 1536 | combined-stream "~1.0.6" 1537 | extend "~3.0.2" 1538 | forever-agent "~0.6.1" 1539 | form-data "~2.3.2" 1540 | har-validator "~5.1.3" 1541 | http-signature "~1.2.0" 1542 | is-typedarray "~1.0.0" 1543 | isstream "~0.1.2" 1544 | json-stringify-safe "~5.0.1" 1545 | mime-types "~2.1.19" 1546 | oauth-sign "~0.9.0" 1547 | performance-now "^2.1.0" 1548 | qs "~6.5.2" 1549 | safe-buffer "^5.1.2" 1550 | tough-cookie "~2.5.0" 1551 | tunnel-agent "^0.6.0" 1552 | uuid "^3.3.2" 1553 | 1554 | require-directory@^2.1.1: 1555 | version "2.1.1" 1556 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1557 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1558 | 1559 | require-main-filename@^2.0.0: 1560 | version "2.0.0" 1561 | resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" 1562 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1563 | 1564 | resolve-url@^0.2.1: 1565 | version "0.2.1" 1566 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" 1567 | integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== 1568 | 1569 | ret@~0.1.10: 1570 | version "0.1.15" 1571 | resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" 1572 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 1573 | 1574 | rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: 1575 | version "2.7.1" 1576 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" 1577 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1578 | dependencies: 1579 | glob "^7.1.3" 1580 | 1581 | rxjs@^6.6.3: 1582 | version "6.6.7" 1583 | resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" 1584 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 1585 | dependencies: 1586 | tslib "^1.9.0" 1587 | 1588 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1589 | version "5.1.2" 1590 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1591 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1592 | 1593 | safe-regex@^1.1.0: 1594 | version "1.1.0" 1595 | resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" 1596 | integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== 1597 | dependencies: 1598 | ret "~0.1.10" 1599 | 1600 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1601 | version "2.1.2" 1602 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1603 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1604 | 1605 | saucelabs@^1.5.0: 1606 | version "1.5.0" 1607 | resolved "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz" 1608 | integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== 1609 | dependencies: 1610 | https-proxy-agent "^2.2.1" 1611 | 1612 | sax@>=0.6.0: 1613 | version "1.2.4" 1614 | resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" 1615 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1616 | 1617 | selenium-webdriver@^3.0.1, selenium-webdriver@3.6.0: 1618 | version "3.6.0" 1619 | resolved "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz" 1620 | integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== 1621 | dependencies: 1622 | jszip "^3.1.3" 1623 | rimraf "^2.5.4" 1624 | tmp "0.0.30" 1625 | xml2js "^0.4.17" 1626 | 1627 | semver@^5.3.0: 1628 | version "5.7.1" 1629 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 1630 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1631 | 1632 | set-blocking@^2.0.0: 1633 | version "2.0.0" 1634 | resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" 1635 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 1636 | 1637 | set-value@^2.0.0, set-value@^2.0.1: 1638 | version "2.0.1" 1639 | resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" 1640 | integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 1641 | dependencies: 1642 | extend-shallow "^2.0.1" 1643 | is-extendable "^0.1.1" 1644 | is-plain-object "^2.0.3" 1645 | split-string "^3.0.1" 1646 | 1647 | setimmediate@^1.0.5: 1648 | version "1.0.5" 1649 | resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" 1650 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 1651 | 1652 | snapdragon-node@^2.0.1: 1653 | version "2.1.1" 1654 | resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" 1655 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 1656 | dependencies: 1657 | define-property "^1.0.0" 1658 | isobject "^3.0.0" 1659 | snapdragon-util "^3.0.1" 1660 | 1661 | snapdragon-util@^3.0.1: 1662 | version "3.0.1" 1663 | resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" 1664 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 1665 | dependencies: 1666 | kind-of "^3.2.0" 1667 | 1668 | snapdragon@^0.8.1: 1669 | version "0.8.2" 1670 | resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" 1671 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 1672 | dependencies: 1673 | base "^0.11.1" 1674 | debug "^2.2.0" 1675 | define-property "^0.2.5" 1676 | extend-shallow "^2.0.1" 1677 | map-cache "^0.2.2" 1678 | source-map "^0.5.6" 1679 | source-map-resolve "^0.5.0" 1680 | use "^3.1.0" 1681 | 1682 | source-map-resolve@^0.5.0: 1683 | version "0.5.3" 1684 | resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" 1685 | integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== 1686 | dependencies: 1687 | atob "^2.1.2" 1688 | decode-uri-component "^0.2.0" 1689 | resolve-url "^0.2.1" 1690 | source-map-url "^0.4.0" 1691 | urix "^0.1.0" 1692 | 1693 | source-map-support@~0.4.0: 1694 | version "0.4.18" 1695 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" 1696 | integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== 1697 | dependencies: 1698 | source-map "^0.5.6" 1699 | 1700 | source-map-url@^0.4.0: 1701 | version "0.4.1" 1702 | resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" 1703 | integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== 1704 | 1705 | source-map@^0.5.6: 1706 | version "0.5.7" 1707 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 1708 | integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== 1709 | 1710 | split-string@^3.0.1, split-string@^3.0.2: 1711 | version "3.1.0" 1712 | resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" 1713 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 1714 | dependencies: 1715 | extend-shallow "^3.0.0" 1716 | 1717 | split@0.3: 1718 | version "0.3.3" 1719 | resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz" 1720 | integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== 1721 | dependencies: 1722 | through "2" 1723 | 1724 | sshpk@^1.7.0: 1725 | version "1.17.0" 1726 | resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" 1727 | integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== 1728 | dependencies: 1729 | asn1 "~0.2.3" 1730 | assert-plus "^1.0.0" 1731 | bcrypt-pbkdf "^1.0.0" 1732 | dashdash "^1.12.0" 1733 | ecc-jsbn "~0.1.1" 1734 | getpass "^0.1.1" 1735 | jsbn "~0.1.0" 1736 | safer-buffer "^2.0.2" 1737 | tweetnacl "~0.14.0" 1738 | 1739 | static-extend@^0.1.1: 1740 | version "0.1.2" 1741 | resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" 1742 | integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== 1743 | dependencies: 1744 | define-property "^0.2.5" 1745 | object-copy "^0.1.0" 1746 | 1747 | stream-combiner@~0.0.4: 1748 | version "0.0.4" 1749 | resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" 1750 | integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== 1751 | dependencies: 1752 | duplexer "~0.1.1" 1753 | 1754 | string_decoder@~1.1.1: 1755 | version "1.1.1" 1756 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1757 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1758 | dependencies: 1759 | safe-buffer "~5.1.0" 1760 | 1761 | string-width@^4.1.0, string-width@^4.2.0: 1762 | version "4.2.3" 1763 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1764 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1765 | dependencies: 1766 | emoji-regex "^8.0.0" 1767 | is-fullwidth-code-point "^3.0.0" 1768 | strip-ansi "^6.0.1" 1769 | 1770 | strip-ansi@^3.0.0: 1771 | version "3.0.1" 1772 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" 1773 | integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== 1774 | dependencies: 1775 | ansi-regex "^2.0.0" 1776 | 1777 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1778 | version "6.0.1" 1779 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1780 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1781 | dependencies: 1782 | ansi-regex "^5.0.1" 1783 | 1784 | supports-color@^2.0.0: 1785 | version "2.0.0" 1786 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 1787 | integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== 1788 | 1789 | supports-color@^7.1.0: 1790 | version "7.2.0" 1791 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1792 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1793 | dependencies: 1794 | has-flag "^4.0.0" 1795 | 1796 | through@~2.3, through@~2.3.1, through@2: 1797 | version "2.3.8" 1798 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1799 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1800 | 1801 | tmp@0.0.30: 1802 | version "0.0.30" 1803 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz" 1804 | integrity sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w== 1805 | dependencies: 1806 | os-tmpdir "~1.0.1" 1807 | 1808 | to-object-path@^0.3.0: 1809 | version "0.3.0" 1810 | resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" 1811 | integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== 1812 | dependencies: 1813 | kind-of "^3.0.2" 1814 | 1815 | to-regex-range@^2.1.0: 1816 | version "2.1.1" 1817 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" 1818 | integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== 1819 | dependencies: 1820 | is-number "^3.0.0" 1821 | repeat-string "^1.6.1" 1822 | 1823 | to-regex@^3.0.1, to-regex@^3.0.2: 1824 | version "3.0.2" 1825 | resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" 1826 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 1827 | dependencies: 1828 | define-property "^2.0.2" 1829 | extend-shallow "^3.0.2" 1830 | regex-not "^1.0.2" 1831 | safe-regex "^1.1.0" 1832 | 1833 | tough-cookie@~2.5.0: 1834 | version "2.5.0" 1835 | resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" 1836 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 1837 | dependencies: 1838 | psl "^1.1.28" 1839 | punycode "^2.1.1" 1840 | 1841 | tslib@^1.9.0: 1842 | version "1.14.1" 1843 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" 1844 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1845 | 1846 | tunnel-agent@^0.6.0: 1847 | version "0.6.0" 1848 | resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" 1849 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1850 | dependencies: 1851 | safe-buffer "^5.0.1" 1852 | 1853 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1854 | version "0.14.5" 1855 | resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" 1856 | integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== 1857 | 1858 | union-value@^1.0.0: 1859 | version "1.0.1" 1860 | resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" 1861 | integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== 1862 | dependencies: 1863 | arr-union "^3.1.0" 1864 | get-value "^2.0.6" 1865 | is-extendable "^0.1.1" 1866 | set-value "^2.0.1" 1867 | 1868 | unset-value@^1.0.0: 1869 | version "1.0.0" 1870 | resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" 1871 | integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== 1872 | dependencies: 1873 | has-value "^0.3.1" 1874 | isobject "^3.0.0" 1875 | 1876 | upath@^1.1.1: 1877 | version "1.2.0" 1878 | resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" 1879 | integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== 1880 | 1881 | uri-js@^4.2.2: 1882 | version "4.4.1" 1883 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 1884 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1885 | dependencies: 1886 | punycode "^2.1.0" 1887 | 1888 | urix@^0.1.0: 1889 | version "0.1.0" 1890 | resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" 1891 | integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== 1892 | 1893 | use@^3.1.0: 1894 | version "3.1.1" 1895 | resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" 1896 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 1897 | 1898 | util-deprecate@~1.0.1: 1899 | version "1.0.2" 1900 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1901 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1902 | 1903 | uuid@^3.3.2: 1904 | version "3.4.0" 1905 | resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" 1906 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 1907 | 1908 | verror@1.10.0: 1909 | version "1.10.0" 1910 | resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" 1911 | integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== 1912 | dependencies: 1913 | assert-plus "^1.0.0" 1914 | core-util-is "1.0.2" 1915 | extsprintf "^1.2.0" 1916 | 1917 | wait-on@^5.3.0: 1918 | version "5.3.0" 1919 | resolved "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz" 1920 | integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== 1921 | dependencies: 1922 | axios "^0.21.1" 1923 | joi "^17.3.0" 1924 | lodash "^4.17.21" 1925 | minimist "^1.2.5" 1926 | rxjs "^6.6.3" 1927 | 1928 | webdriver-js-extender@2.1.0: 1929 | version "2.1.0" 1930 | resolved "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz" 1931 | integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== 1932 | dependencies: 1933 | "@types/selenium-webdriver" "^3.0.0" 1934 | selenium-webdriver "^3.0.1" 1935 | 1936 | webdriver-manager@^12.1.7: 1937 | version "12.1.8" 1938 | resolved "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz" 1939 | integrity sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg== 1940 | dependencies: 1941 | adm-zip "^0.4.9" 1942 | chalk "^1.1.1" 1943 | del "^2.2.0" 1944 | glob "^7.0.3" 1945 | ini "^1.3.4" 1946 | minimist "^1.2.0" 1947 | q "^1.4.1" 1948 | request "^2.87.0" 1949 | rimraf "^2.5.2" 1950 | semver "^5.3.0" 1951 | xml2js "^0.4.17" 1952 | 1953 | which-module@^2.0.0: 1954 | version "2.0.0" 1955 | resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" 1956 | integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== 1957 | 1958 | wrap-ansi@^6.2.0: 1959 | version "6.2.0" 1960 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" 1961 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1962 | dependencies: 1963 | ansi-styles "^4.0.0" 1964 | string-width "^4.1.0" 1965 | strip-ansi "^6.0.0" 1966 | 1967 | wrappy@1: 1968 | version "1.0.2" 1969 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1970 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1971 | 1972 | xml2js@^0.4.17: 1973 | version "0.4.23" 1974 | resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" 1975 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 1976 | dependencies: 1977 | sax ">=0.6.0" 1978 | xmlbuilder "~11.0.0" 1979 | 1980 | xmlbuilder@~11.0.0: 1981 | version "11.0.1" 1982 | resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" 1983 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1984 | 1985 | y18n@^4.0.0: 1986 | version "4.0.3" 1987 | resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" 1988 | integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== 1989 | 1990 | yargs-parser@^18.1.2: 1991 | version "18.1.3" 1992 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" 1993 | integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== 1994 | dependencies: 1995 | camelcase "^5.0.0" 1996 | decamelize "^1.2.0" 1997 | 1998 | yargs@^15.3.1: 1999 | version "15.4.1" 2000 | resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" 2001 | integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== 2002 | dependencies: 2003 | cliui "^6.0.0" 2004 | decamelize "^1.2.0" 2005 | find-up "^4.1.0" 2006 | get-caller-file "^2.0.1" 2007 | require-directory "^2.1.1" 2008 | require-main-filename "^2.0.0" 2009 | set-blocking "^2.0.0" 2010 | string-width "^4.2.0" 2011 | which-module "^2.0.0" 2012 | y18n "^4.0.0" 2013 | yargs-parser "^18.1.2" 2014 | --------------------------------------------------------------------------------