From 220a9815d01918dd76df0ad463bcc38749f9b08c Mon Sep 17 00:00:00 2001 From: Asa Oines Date: Tue, 26 Nov 2019 19:11:22 -0800 Subject: [PATCH 01/13] Display current account locked gold requirement in lockedgold:show (#1923) --- packages/cli/src/commands/lockedgold/show.ts | 2 +- packages/contractkit/src/wrappers/LockedGold.ts | 4 ++++ packages/contractkit/src/wrappers/Validators.ts | 10 ++++++++++ packages/docs/command-line-interface/lockedgold.md | 2 +- packages/protocol/contracts/governance/Validators.sol | 6 ++++-- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/commands/lockedgold/show.ts b/packages/cli/src/commands/lockedgold/show.ts index f6f21de0902..8cc4e747357 100644 --- a/packages/cli/src/commands/lockedgold/show.ts +++ b/packages/cli/src/commands/lockedgold/show.ts @@ -5,7 +5,7 @@ import { Args } from '../../utils/command' export default class Show extends BaseCommand { static description = - 'Show Locked Gold information for a given account. This includes the total amount of locked gold, the amount being used for voting in Validator Elections, and any pending withdrawals that have been initiated via "lockedgold:unlock".' + 'Show Locked Gold information for a given account. This includes the total amount of locked gold, the amount being used for voting in Validator Elections, the Locked Gold balance this account is required to maintain due to a registered Validator or Validator Group, and any pending withdrawals that have been initiated via "lockedgold:unlock".' static flags = { ...BaseCommand.flags, diff --git a/packages/contractkit/src/wrappers/LockedGold.ts b/packages/contractkit/src/wrappers/LockedGold.ts index e37d2eedd9a..d68fb41d08a 100644 --- a/packages/contractkit/src/wrappers/LockedGold.ts +++ b/packages/contractkit/src/wrappers/LockedGold.ts @@ -24,6 +24,7 @@ interface AccountSummary { lockedGold: { total: BigNumber nonvoting: BigNumber + requirement: BigNumber } pendingWithdrawals: PendingWithdrawal[] } @@ -155,11 +156,14 @@ export class LockedGoldWrapper extends BaseWrapper { async getAccountSummary(account: string): Promise { const nonvoting = await this.getAccountNonvotingLockedGold(account) const total = await this.getAccountTotalLockedGold(account) + const validators = await this.kit.contracts.getValidators() + const requirement = await validators.getAccountLockedGoldRequirement(account) const pendingWithdrawals = await this.getPendingWithdrawals(account) return { lockedGold: { total, nonvoting, + requirement, }, pendingWithdrawals, } diff --git a/packages/contractkit/src/wrappers/Validators.ts b/packages/contractkit/src/wrappers/Validators.ts index 33cc4b27466..9d9a6032049 100644 --- a/packages/contractkit/src/wrappers/Validators.ts +++ b/packages/contractkit/src/wrappers/Validators.ts @@ -83,6 +83,16 @@ export class ValidatorsWrapper extends BaseWrapper { } } + /** + * Returns the Locked Gold requirements for specific account. + * @returns The Locked Gold requirements for a specific account. + */ + getAccountLockedGoldRequirement = proxyCall( + this.contract.methods.getAccountLockedGoldRequirement, + undefined, + toBigNumber + ) + /** * Returns current configuration parameters. */ diff --git a/packages/docs/command-line-interface/lockedgold.md b/packages/docs/command-line-interface/lockedgold.md index c792e3f056b..2a564d67d4c 100644 --- a/packages/docs/command-line-interface/lockedgold.md +++ b/packages/docs/command-line-interface/lockedgold.md @@ -24,7 +24,7 @@ _See code: [packages/cli/src/commands/lockedgold/lock.ts](https://github.com/cel ### Show -Show Locked Gold information for a given account. This includes the total amount of locked gold, the amount being used for voting in Validator Elections, and any pending withdrawals that have been initiated via "lockedgold:unlock". +Show Locked Gold information for a given account. This includes the total amount of locked gold, the amount being used for voting in Validator Elections, the Locked Gold balance this account is required to maintain due to a registered Validator or Validator Group, and any pending withdrawals that have been initiated via "lockedgold:unlock". ``` USAGE diff --git a/packages/protocol/contracts/governance/Validators.sol b/packages/protocol/contracts/governance/Validators.sol index c1d2b77630c..3cfca818e6a 100644 --- a/packages/protocol/contracts/governance/Validators.sol +++ b/packages/protocol/contracts/governance/Validators.sol @@ -419,6 +419,7 @@ contract Validators is * @param index The index of this validator in the list of all registered validators. * @return True upon success. * @dev Fails if the account is not a validator. + * @dev Fails if the validator has been a member of a group too recently. */ function deregisterValidator(uint256 index) external nonReentrant returns (bool) { address account = getAccounts().signerToAccount(msg.sender); @@ -587,6 +588,7 @@ contract Validators is * @param index The index of this validator group in the list of all validator groups. * @return True upon success. * @dev Fails if the account is not a validator group with no members. + * @dev Fails if the group has had members too recently. */ function deregisterValidatorGroup(uint256 index) external nonReentrant returns (bool) { address account = getAccounts().signerToAccount(msg.sender); @@ -720,9 +722,9 @@ contract Validators is } /** - * @notice Returns the locked gold balance requirement for the supplied account. + * @notice Returns the current locked gold balance requirement for the supplied account. * @param account The account that may have to meet locked gold balance requirements. - * @return The locked gold balance requirement for the supplied account. + * @return The current locked gold balance requirement for the supplied account. */ function getAccountLockedGoldRequirement(address account) public view returns (uint256) { if (isValidator(account)) { From 9a922714bc6f557f24938adfcfa4a338a41abfc5 Mon Sep 17 00:00:00 2001 From: Audrey Penven Date: Wed, 27 Nov 2019 05:03:48 +0100 Subject: [PATCH 02/13] Bugfix: actually whitelist oracle account (#1865) --- packages/celotool/src/lib/migration-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/celotool/src/lib/migration-utils.ts b/packages/celotool/src/lib/migration-utils.ts index 8ea7bf23ddb..6383ef4dcd1 100644 --- a/packages/celotool/src/lib/migration-utils.ts +++ b/packages/celotool/src/lib/migration-utils.ts @@ -40,8 +40,8 @@ export function migrationOverrides() { stableToken: { initialAccounts: getAddressesFor(AccountType.FAUCET, mnemonic, 2), values: getAddressesFor(AccountType.FAUCET, mnemonic, 2).map(() => '60000000000000000000000'), // 60k Celo Dollars + oracles: getAddressesFor(AccountType.PRICE_ORACLE, mnemonic, 1), }, - oracles: getAddressesFor(AccountType.PRICE_ORACLE, mnemonic, 1), } } From ff6fb3ee7bd5dea3d255db09d194aee0659dec82 Mon Sep 17 00:00:00 2001 From: Nam Chu Hoai Date: Tue, 26 Nov 2019 22:13:38 -0800 Subject: [PATCH 03/13] Indicate account registration (#1928) --- packages/cli/src/utils/checks.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/utils/checks.ts b/packages/cli/src/utils/checks.ts index d51d3b21df4..485f7276688 100644 --- a/packages/cli/src/utils/checks.ts +++ b/packages/cli/src/utils/checks.ts @@ -8,12 +8,18 @@ import { BaseCommand } from '../base' export interface CommandCheck { name: string + errorMessage?: string run(): Promise | boolean } -export function check(name: string, predicate: () => Promise | boolean): CommandCheck { +export function check( + name: string, + predicate: () => Promise | boolean, + errorMessage?: string +): CommandCheck { return { name, + errorMessage, run: predicate, } } @@ -63,8 +69,8 @@ class CheckBuilder { } } - addCheck(name: string, predicate: () => Promise | boolean) { - this.checks.push(check(name, predicate)) + addCheck(name: string, predicate: () => Promise | boolean, errorMessage?: string) { + this.checks.push(check(name, predicate, errorMessage)) return this } @@ -130,7 +136,11 @@ class CheckBuilder { ) isAccount = (address: Address) => - this.addCheck(`${address} is Account`, this.withAccounts((accs) => accs.isAccount(address))) + this.addCheck( + `${address} is Account`, + this.withAccounts((accs) => accs.isAccount(address)), + `${address} is not registered as an account. Try running account:register` + ) hasEnoughGold = (account: Address, value: BigNumber) => { const valueInEth = this.kit.web3.utils.fromWei(value.toFixed(), 'ether') @@ -149,7 +159,8 @@ class CheckBuilder { const passed = await aCheck.run() const status︎Str = chalk.bold(passed ? '✔' : '✘') const color = passed ? chalk.green : chalk.red - console.log(color(` ${status︎Str} ${aCheck.name}`)) + const msg = !passed && aCheck.errorMessage ? aCheck.errorMessage : '' + console.log(color(` ${status︎Str} ${aCheck.name} ${msg}`)) allPassed = allPassed && passed } From 8f86e14f698a561fa4a6ae7703d1650e1727903f Mon Sep 17 00:00:00 2001 From: Nam Chu Hoai Date: Tue, 26 Nov 2019 23:09:57 -0800 Subject: [PATCH 04/13] Enhanced Validator Setup Docs (#1926) --- packages/attestation-service/README.md | 4 +- .../config/.env.development | 5 +- .../src/requestHandlers/attestation.ts | 11 +- .../docs/getting-started/baklava-testnet.md | 2 +- .../getting-started/running-a-validator.md | 369 ++++++++++++------ .../running-attestation-service.md | 65 ++- .../templates/attestation.statefulset.yaml | 2 +- 7 files changed, 282 insertions(+), 176 deletions(-) diff --git a/packages/attestation-service/README.md b/packages/attestation-service/README.md index 9e7ecf1fa2d..b2dc56afb54 100644 --- a/packages/attestation-service/README.md +++ b/packages/attestation-service/README.md @@ -8,8 +8,8 @@ You can use the following environment variables to configure the attestation ser - `DATABASE_URL` - The URL under which your database is accessible, currently supported are `postgres://`, `mysql://` and `sqlite://` - `CELO_PROVIDER` - The URL under which a celo blockchain node is reachable. This node should also have the `ATTESTATION_SIGNER_ADDRESS` unlocked for signing of the attestations themselves. -- `ACCOUNT_ADDRESS` - The address of the account on the `Accounts` smart contract -- `ATTESTATION_SIGNER_ADDRESS` - The address of the key with which attestations should be signed. You could use your account for attestations, but really you should authorize a dedicated attestation key +- `CELO_VALIDATOR_ADDRESS` - The address of the validator on the `Accounts` smart contract +- `ATTESTATION_SIGNER_ADDRESS` - The address of the key with which attestations should be signed. - `APP_SIGNATURE` - The hash with which clients can auto-read SMS messages on android - `SMS_PROVIDERS` - A comma-separated list of providers you want to configure, we currently support: diff --git a/packages/attestation-service/config/.env.development b/packages/attestation-service/config/.env.development index 76186201b78..b4feb5ef829 100644 --- a/packages/attestation-service/config/.env.development +++ b/packages/attestation-service/config/.env.development @@ -1,7 +1,6 @@ DATABASE_URL=sqlite://db/dev.db -CELO_PROVIDER=https://integration-forno.celo-testnet.org -ACCOUNT_ADDRESS=0xE6e53b5fc2e18F51781f14a3ce5E7FD468247a15 -ATTESTATION_KEY=x +CELO_PROVIDER=http://localhost:8545 +CELO_VALIDATOR_ADDRESS=0xE6e53b5fc2e18F51781f14a3ce5E7FD468247a15 APP_SIGNATURE=x SMS_PROVIDERS=twilio,nexmo NEXMO_KEY=x diff --git a/packages/attestation-service/src/requestHandlers/attestation.ts b/packages/attestation-service/src/requestHandlers/attestation.ts index 38c51b69035..c1fec847eec 100644 --- a/packages/attestation-service/src/requestHandlers/attestation.ts +++ b/packages/attestation-service/src/requestHandlers/attestation.ts @@ -40,12 +40,15 @@ export function getAttestationSignerAddress() { } export function getAccountAddress() { - if (process.env.ACCOUNT_ADDRESS === undefined || !isValidAddress(process.env.ACCOUNT_ADDRESS)) { - console.error('Did not specify valid ACCOUNT_ADDRESS') - throw new Error('Did not specify valid ACCOUNT_ADDRESS') + if ( + process.env.CELO_VALIDATOR_ADDRESS === undefined || + !isValidAddress(process.env.CELO_VALIDATOR_ADDRESS) + ) { + console.error('Did not specify valid CELO_VALIDATOR_ADDRESS') + throw new Error('Did not specify valid CELO_VALIDATOR_ADDRESS') } - return toChecksumAddress(process.env.ACCOUNT_ADDRESS) + return toChecksumAddress(process.env.CELO_VALIDATOR_ADDRESS) } function toBase64(str: string) { diff --git a/packages/docs/getting-started/baklava-testnet.md b/packages/docs/getting-started/baklava-testnet.md index 901fc2239a2..bdc3e7e2668 100644 --- a/packages/docs/getting-started/baklava-testnet.md +++ b/packages/docs/getting-started/baklava-testnet.md @@ -11,7 +11,7 @@ You have some instructions about running the network by operating a [full node]( Please refer to [Key Concepts](../overview.md#background-and-key-concepts) for background on blockchains and an explanation of terms used in the section. {% hint style="warning" %} -The Baklava Bet Network is designed for testing and experimentation by developers. Its tokens hold no real world economic value. The testnet software will be upgraded and the entirety of its data reset on a regular basis. This will erase your accounts, their balance and your transaction history. The testnet software will be upgraded on a regular basis. You may encounter bugs and limitations with the software and documentation. +Baklava, the incentivized testnet for the Celo Protocol. It is an early, partially audited release betanet version of the Celo Protocol. The Great Celo Stake Off allows eligible participants to engage with Baklava and, related to that participation and subject to these Terms and Conditions, eligible participants will have the opportunity to receive Celo Gold at the Mainnet launch of the Celo Protocol. The Great Celo Stake Off will operate in phases, with each phase focusing on a different part of the protocol or infrastructure to test. Transitions between each phase may include a full network reset, a hard fork, or an upgrade. {% endhint %} Please help us improve Celo by asking questions on the [Forum](https://forum.celo.org)! diff --git a/packages/docs/getting-started/running-a-validator.md b/packages/docs/getting-started/running-a-validator.md index 20527123f31..c894c46bc79 100644 --- a/packages/docs/getting-started/running-a-validator.md +++ b/packages/docs/getting-started/running-a-validator.md @@ -21,15 +21,19 @@ - [Run for election](#run-for-election) - [Stop Validating](#stop-validating) -This section explains how to get a Validator node running on the network, using a Docker image that was built for this purpose. Most of this process is the same as running a full node, but with a few additional steps. +This section explains how to get a Validator node running on the network, using the same docker image used for running a full node. -Validators help secure the Celo network by participating in Celo’s Proof of Stake protocol. Validators are organized into Validator Groups, analogous to parties in representative democracies. A Validator Group is essentially an ordered list of Validators, along with metadata like name and URL. +Validators help secure the Celo network by participating in Celo’s Proof of Stake protocol. Validators are organized into Validator Groups, analogous to parties in representative democracies. A Validator Group is essentially an ordered list of Validators. Just as anyone in a democracy can create their own political party, or seek to get selected to represent a party in an election, any Celo user can create a Validator group and add themselves to it, or set up a potential Validator and work to get an existing Validator group to include them. While other Validator Groups will exist on the Celo Networks, the fastest way to get up and running with a Validator will be to register a Validator Group, register a Validator, and add that Validator to your Validator Group. The addresses used to register Validator Groups and Validators must be unique, which will require that you create two accounts in the step-by-step guide below. -You can find more details about Celo mission and why becoming a Validator [at the following page](https://medium.com/celohq/calling-all-chefs-become-a-celo-validator-c75d1c2909aa). +Because of the importance of Validator security and availability, Validators are expected to run one or more additional "proxy" nodes. In this setup, the proxy node connects with the rest of the network, and the machine running the Validator communicates only with the proxy, ideally via a private network. + +Additionally, Validators are expected to run an [Attestation Service](https://github.com/celo-org/celo-monorepo/tree/master/packages/attestation-service) as part of the [lightweight identity protocol](/celo-codebase/protocol/identity), to provide attestations that allow users to map their phone number to a Celo address. + +You can find more details about Celo mission and why to become a Validator [at the following page](https://medium.com/celohq/calling-all-chefs-become-a-celo-validator-c75d1c2909aa). {% hint style="info" %} If you are starting up a Validator, please consider leaving it running for a few weeks to support the network. @@ -39,14 +43,18 @@ If you are starting up a Validator, please consider leaving it running for a few ### Hardware requirements -Because Celo network is based in Proof of Stake, the hardware requirements are not very high. Proof of Stake consensus is not so CPU intensive as Proof of Work but has a higher requirements of network connectivity and latency. Here you have a list of the standard requirements for running a Validator node: +Celo is a Proof of Stake network, which has different hardware requirements than a Proof of Work network. Proof of Stake consensus is less CPU intensive, but has higher network connectivity and latency requirements. Below is a list of standard requirements for running a Validator node on the Celo Network: - Memory: 8 GB RAM - CPU: Quad core 3GHz (64-bit) - Disk: 256 GB of SSD storage - Network: At least 1 GB input/output dual Ethernet -It is recommended to run the Validator node in an environment that facilitates a 24/7 execution. Deployments in a top-tier datacenter facilitates the security and better uptimes. +The recommended Celo Validator setup involves continually running three nodes on three separate machines: + +- 1 Validator node in a highly secure environment like a top-tier datacenter with 24/7 execution +- 1 Validator Proxy node, in a highly available, environment, but with lesser security requirements +- 1 Attestation node that runs the Attestation service and signs attestations, which can be a light node, and thus has lower requirements ### Software requirements @@ -72,35 +80,50 @@ When you see text in angle brackets <>, replace them and the text inside w ## Instructions -This section explains how to get a Validator node running on the Baklava network, using a Docker image that was built for this purpose. Most of this process is the same as running a full node, but with a few additional steps. +### Key Management + +Private keys are the central primitive of any cryptographic system and need to be handled with extreme care. Loss of your private key can lead to irreversible loss of value. + +#### Unlocking -If you are re-running these instructions, the Celo Docker image may have been updated, and it's important to get the latest version. +Celo nodes store private keys encrypted on disk with a password, and need to be "unlocked" before use. Private keys can be unlocked in two ways: -To run a complete Validator it's necessary to execute the following components: +1. By running the `celocli account:unlock` command. Note that the node must have the "personal" RPC API enabled in order for this command to work. +2. By setting the `--unlock` flag when starting the node. -- The Validator software -- A Proxy that acts as an intermediary for the Validator requests -- The Attestation Service +It is important to note that when a key is unlocked you need to be particularly careful about enabling access to the node's RPC APIs. -The Proxy is not mandatory but highly recommended. It allows to protect the Validator node from outside connections and hide the Validator behind that Proxy from other nodes of the network. +#### Account and Signer keys + +Running a Celo Validator node requires the management of several different keys, each with different privileges. Keys that need to be accessed frequently (e.g. for signing blocks) are at greater risk of being compromised, and thus have more limited permissions, while keys that need to be accessed infrequently (e.g. for locking Celo Gold) are less onerous to store securely, and thus have more expansive permissions. Below is a summary of the various keys that are used in the Celo network, and a description of their permissions. + +| Name of the key | Purpose | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Account key | This is the key with the highest level of permissions, and is thus the most sensitive. It can be used to lock and unlock Celo Gold, and authorize vote, validator, and attestation keys. Note that the account key also has all of the permissions of the other keys. | | +| Validator signer key | This is the key that has permission to register and manage a Validator or Validator Group, and participate in BFT consensus. | | +| Vote signer key | This key can be used to vote in Validator elections and on-chain governance. | | +| Attestation signer key | This key is used to sign attestations in Celo's lightweight identity protocol. | | + +Note that account and signer keys must be unique and may not be reused. ### Environment variables -| Variable | Explanation | -| ----------------------------- | ----------------------------------------------------------------- | -| CELO_IMAGE | The Docker image used for the Validator and Proxy containers | | -| NETWORK_ID | The Celo network chain ID | | -| URL_VERIFICATION_POOL | URL for the Verification pool for the attestation process | | -| CELO_VALIDATOR_GROUP_ADDRESS | The public address for the validation group | | -| CELO_VALIDATOR_ADDRESS | The public address for the Validator instance | | -| CELO_PROXY_ADDRESS | The public address for the Proxy instance | | -| CELO_VALIDATOR_BLS_PUBLIC_KEY | The BLS public key for the Validator instance | | -| CELO_VALIDATOR_BLS_SIGNATURE | A proof-of-possession of the BLS public key | | -| PROXY_ENODE | The enode address for the Validator proxy | | -| PROXY_IP | The Proxy container internal IP address from docker pool address | | -| ATTESTATION_SIGNER_ADDRESS | The address of the attestation signer authorized by the validator | | -| ATTESTATION_SERVICE_URL | The URL to access the Attestation Service deployed | | -| METADATA_URL | The URL to access the metadata file for your Attestation Service | | +| Variable | Explanation | +| ----------------------------- | ------------------------------------------------------------------------- | +| CELO_IMAGE | The Docker image used for the Validator and Proxy containers | | +| NETWORK_ID | The Celo Baklava network chain ID | | +| CELO_VALIDATOR_GROUP_ADDRESS | The account address for the Validator Group | | +| CELO_VALIDATOR_ADDRESS | The account address for the Validator | | +| CELO_VALIDATOR_SIGNER_ADDRESS | The address of the validator signer authorized by the validator account | | +| CELO_VALIDATOR_SIGNER_POP | The proof-of-possession of the validator signer key | | +| CELO_VALIDATOR_BLS_PUBLIC_KEY | The BLS public key for the Validator instance | | +| CELO_VALIDATOR_BLS_SIGNATURE | A proof-of-possession of the BLS public key | | +| PROXY_ENODE | The enode address for the Validator proxy | | +| PROXY_IP | The Proxy container internal IP address from docker pool address | | +| ATTESTATION_SIGNER_ADDRESS | The address of the attestation signer authorized by the validator account | | +| ATTESTATION_SIGNER_POP | The proof-of-possession of the attestation signer key | | +| ATTESTATION_SERVICE_URL | The URL to access the deployed Attestation Service | | +| METADATA_URL | The URL to access the metadata file for your Attestation Service | | First we are going to setup the main environment variables related with the `Baklava` network. Run: @@ -117,230 +140,328 @@ In all the commands we are going to see the `CELO_IMAGE` variable to refer to th docker pull $CELO_IMAGE ``` -### Create accounts +### Create the Validator and Validator Group accounts -At this point we need to create the accounts that will be used by the Validator, the Proxy and the attestation signer. We create and cd into the directory where you want to store the data and any other files needed to run your node. You can name this whatever you’d like, but here’s a default you can use: +First, you'll need to generate account keys for your Validator and Validator Group. These are the keys that will have access to your locked Celo Gold, and thus should be handled with care. For the purposes of this guide, we will be storing these keys on your local machine, but we recommend that you store then in a more secure manner. ```bash -mkdir -p celo-data-dir/proxy celo-data-dir/validator celo-data-dir/attestations -cd celo-data-dir +# On your local machine +mkdir -p celo-data-dir/accounts +cd celo-data-dir/accounts +docker run -v $PWD/accounts:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" +docker run -v $PWD/accounts:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" ``` -It is worth noting that we create all these accounts on the same machine right now, but you are expected to use these accounts on the services on separate machines. We are going to need to create 4 accounts, 2 for the Validator, 1 for the Proxy and the last one for the Attestation Service. You can generate their addresses using the below commands if you don’t already have them. If you already have some accounts, you can skip this step. - -To create the accounts needed, run the following commands. The first two blocks create the accounts for the Validator, the third one for the Proxy, and the last one for the attestation service. Also we save these addresses to environment variables, so that you can reference it later (don't include the braces): +This should generate two accounts in your current directory and print them out, set them in an environment variables: ```bash -docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" +# On your local machine export CELO_VALIDATOR_GROUP_ADDRESS= - -docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" export CELO_VALIDATOR_ADDRESS= +``` -docker run -v $PWD/proxy:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" -export CELO_PROXY_ADDRESS= +Next, we'll run a node on your local machine so that we can use these accounts to lock Celo Gold and authorize the keys needed to run your validator. To do this, we need to run the following commands, which fetch the genesis block and a list of other nodes in the network to connect to. -docker run -v $PWD/attestations:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" -export ATTESTATION_SIGNER_ADDRESS= +```bash +# On your local machine +docker run -v $PWD/accounts:/root/.celo $CELO_IMAGE init /celo/genesis.json +docker run -v $PWD/accounts:/root/.celo --entrypoint cp $CELO_IMAGE /celo/static-nodes.json /root/.celo/ ``` -Those commands will prompt you for a passphrase, ask you to confirm it, and then will output your account address: `Address: {}` +To run the node: -{% hint style="danger" %} -**Warning**: There is a known issue `(Fatal: Failed to read passphrase: liner: function not supported in this terminal” rather than just failing)` running geth inside Docker that happens eventually. So if that command fails, please try again, and if it continues to fail after several attempts, check this page [this page](https://forum.celo.org/t/setting-up-a-validator-faq/90). -{% endhint %} +```bash +# On your local machine +docker run --name celo-accounts -d --restart always -p 8545:8545 -v $PWD/accounts:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal +``` + +### Obtain and lock up some Celo Gold for staking -In order to register the Validator later on, generate a "proof of possession" - a signature proving you know your Validator's BLS private key. Run this command to generate this "proof-of-possession", which consists of a the BLS public key and a signature: +To participate in The Great Celo Stake Off (aka TGCSO) and get fauceted it's necessary to register online via an [online form](https://docs.google.com/forms/d/e/1FAIpQLSfbn5hTJ4UIWpN92-o2qMTUB0UnrFsL0fm97XqGe4VhhN_r5A/viewform). While you wait, let's deploy the remaining components: + +### Deploy a Validator + +To actually register as a validator, we'll need to generate a validating signer key. On your Validator machine (which should not be accessible from the public internet), follow very similar steps: ```bash -docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account proof-of-possession $CELO_VALIDATOR_ADDRESS $CELO_VALIDATOR_ADDRESS" +# On the validator machine +mkdir -p celo-data-dir/validator +cd celo-data-dir/validator +docker run -v $PWD/validator:/root/.celo $CELO_IMAGE init /celo/genesis.json +docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" +export CELO_VALIDATOR_SIGNER_ADDRESS= ``` -It will prompt you for the passphrase you've chosen for the Validator account. Let's save the resulting proof-of-possession to two environment variables: +In order to authorize our Validator signer, we need to create a proof that we have possession of the corresponding private key. We do so by signing a message that consists of the Validator account address. To generate the proof-of-possession, run the following command: ```bash -export CELO_VALIDATOR_BLS_PUBLIC_KEY= -export CELO_VALIDATOR_BLS_SIGNATURE= +# On the validator machine +# Note that you have to export CELO_VALIDATOR_ADDRESS on this machine +export $CELO_VALIDATOR_ADDRESS= +docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account proof-of-possession $CELO_VALIDATOR_SIGNER_ADDRESS $CELO_VALIDATOR_ADDRESS" ``` -### Deploy the Validator and Proxy nodes +Validators on the Celo network use BLS aggregated signatures to create blocks in addition to the Validator signer (ECDSA) key. While an independent BLS key can be specified, the simplest thing to do is to derive the BLS key from the Validator signer key. When we register our Validator, we'll need to prove possession of the BLS key as well, which can be done by running the following command: -We initialize the Docker containers for the Validator and the Proxy, building from an image for the network and initializing Celo with the genesis block found inside the Docker image: +```bash +# On the validator machine +docker run -v $PWD/validator:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account proof-of-possession $CELO_VALIDATOR_SIGNER_ADDRESS $CELO_VALIDATOR_ADDRESS --bls" +``` + +It will prompt you for the passphrase you've chosen for the Validator signer key. Let's save the resulting proof-of-possession to three environment variables: ```bash -docker run -v $PWD/proxy:/root/.celo $CELO_IMAGE init /celo/genesis.json -docker run -v $PWD/validator:/root/.celo $CELO_IMAGE init /celo/genesis.json +# On your local machine +export CELO_VALIDATOR_SIGNER_POP= +export CELO_VALIDATOR_BLS_PUBLIC_KEY= +export CELO_VALIDATOR_BLS_SIGNATURE= ``` -{% hint style="danger" %} -**Warning**: There is a known issue `(Fatal: Failed to read passphrase: liner: function not supported in this terminal” rather than just failing)` running geth inside Docker that happens eventually. So if that command fails, please try again, and if it continues to fail after several attempts, check this page [this page](https://forum.celo.org/t/setting-up-a-validator-faq/90). -{% endhint %} +We'll get back to this machine later, but for now, let's give it a proxy. + +### Deploy a proxy -In order to allow the node to sync with the network, give it the address of existing nodes in the network to the Proxy. The Validator will sync through the Proxy: +To avoid exposing the validator to the public internet, we are deploying a proxy node which is responsible to communicate with the network. On our Proxy machine, we'll setup the node as per usual now: ```bash +# On the proxy machine +mkdir -p celo-data-dir/proxy +cd celo-data-dir/proxy +docker run -v $PWD/proxy:/root/.celo $CELO_IMAGE init /celo/genesis.json docker run -v $PWD/proxy:/root/.celo --entrypoint cp $CELO_IMAGE /celo/static-nodes.json /root/.celo/ ``` -#### Running the Proxy - -At this point we are ready to start up the Proxy: +You can then run the proxy with ```bash -docker run --name celo-proxy -d --restart always -p 8555:8545 -p 8556:8546 -p 30313:30303 -p 30313:30303/udp -p 30503:30503 -p 30503:30503/udp -v $PWD/proxy:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal,istanbul --etherbase=$CELO_PROXY_ADDRESS --proxy.proxy --proxy.proxiedvalidatoraddress $CELO_VALIDATOR_ADDRESS --proxy.internalendpoint :30503 +# On the proxy machine +# Note that you'll have to export CELO_VALIDATOR_SIGNER_ADDRESS on this machine +docker run --name celo-proxy -d --restart always -p 30313:30303 -p 30313:30303/udp -p 30503:30503 -p 30503:30503/udp -v $PWD/proxy:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --proxy.proxy --proxy.proxiedvalidatoraddress $CELO_VALIDATOR_SIGNER_ADDRESS --proxy.internalendpoint :30503 ``` -#### Running the Validator - -Now that we have the Proxy up and running, we need to obtain its enode and IP address, so that we can connect the Validator to the proxy. You can do that running the following commands: +Once the proxy is running, we will need to retrieve it's enode so that the validator will be able to connect to it. ```bash -export PROXY_ENODE=$(docker exec celo-proxy geth --exec "admin.nodeInfo['enode'].split('//')[1].split('@')[0]" attach | tr -d '"') -export PROXY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' celo-proxy) +# On the proxy machine, retrieve the proxy enode +echo $(docker exec celo-proxy geth --exec "admin.nodeInfo['enode'].split('//')[1].split('@')[0]" attach | tr -d '"') ``` -Now we can start up the Validator node. In the below command remember to replace the **VALIDATOR_ADDRESS_PASSWORD** for the password you used when you created the `CELO_VALIDATOR_ADDRESS`: +Now we need to set the proxy enode and proxy IP address in environment variables on the validator machine. ```bash -docker run -v $PWD/validator:/root/.celo --entrypoint sh --rm $CELO_IMAGE -c "echo VALIDATOR_ADDRESS_PASSWORD > /root/.celo/.password" -docker run --name celo-validator -d --restart always -p 127.0.0.1:8545:8545 -p 127.0.0.1:8546:8546 -p 30303:30303 -p 30303:30303/udp -v $PWD/validator:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal,istanbul --mine --istanbul.blockperiod=5 --istanbul.requesttimeout=3000 --etherbase $CELO_VALIDATOR_ADDRESS --nodiscover --proxy.proxied --proxy.proxyenodeurlpair=enode://$PROXY_ENODE@$PROXY_IP:30503\;enode://$PROXY_ENODE@$PROXY_IP:30303 --unlock=$CELO_VALIDATOR_ADDRESS --password /root/.celo/.password +# On the validator machine +export PROXY_ENODE= +export PROXY_IP= ``` -**Security**: The command line above includes the parameter `--rpcaddr 0.0.0.0` which makes the Celo Blockchain software listen for incoming RPC requests on all the interfaces of the Docker container. Exercise extreme caution in doing this when running outside Docker, as it means that any unlocked accounts and their funds may be accessed from other machines on the Internet. In the context of running a Docker container on your local machine, this together with the `docker -p` flags allows you to make RPC calls from outside the container, i.e from your local host, but not from outside your machine. Read more about [Docker Networking](https://docs.docker.com/network/network-tutorial-standalone/#use-user-defined-bridge-networks) here. +Let's connect the validator to the proxy: + +### Connect the Validator to the Proxy + +When starting up your validator, it will attempt to create a network connection between the validator machine and the proxy machine. You will need make sure that your proxy machine has the appropriate firewall settings to allow the validator to connect to it. + +Specifically, on the proxy machine, port 30303 should allow TCP and UDP connections from all IP addresses. And port 30503 should allow TCP connections from the IP address of your validator machine. + +Once that it completed, go ahead and run the validator. + +```bash +# On the validator machine +docker run -v $PWD/validator:/root/.celo --entrypoint sh --rm $CELO_IMAGE -c "echo VALIDATOR_SIGNER_PASSWORD > /root/.celo/.password" +docker run --name celo-validator -d --restart always -p 30303:30303 -p 30303:30303/udp -v $PWD/validator:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --mine --istanbul.blockperiod=5 --istanbul.requesttimeout=3000 --etherbase $CELO_VALIDATOR_ADDRESS --nodiscover --proxy.proxied --proxy.proxyenodeurlpair=enode://$PROXY_ENODE@$PROXY_IP:30503\;enode://$PROXY_ENODE@$PROXY_IP:30303 --unlock=$CELO_VALIDATOR_SIGNER_ADDRESS --password /root/.celo/.password +``` The `mine` flag does not mean the node starts mining blocks, but rather starts trying to participate in the BFT consensus protocol. It cannot do this until it gets elected -- so next we need to stand for election. The `networkid` parameter value of `1101` indicates we are connecting the Baklava Beta network. -### Running the Attestation signer +### Register the Accounts -As part of the [lightweight identity protocol](/celo-codebase/protocol/identity), Validators are expected to run an [Attestation Service](https://github.com/celo-org/celo-monorepo/tree/master/packages/attestation-service) to provide attestations that allow users to map their phone number to an account on Celo. +By now 12,000 Celo Gold should have been sent to your Validator and Validator Group account addresses. This will allow you to submit transactions to the network via the `celocli`. To do so, you'll need to have a running node with access to the account keys. Start one by running the following commands on your local machine: -You can find the complete instructions about how to run the [Attestation Service at the documentation page](running-attestation-service.md). +```bash +# On your local machine +docker run -v $PWD/accounts:/root/.celo $CELO_IMAGE init /celo/genesis.json +docker run -v $PWD/accounts:/root/.celo --entrypoint cp $CELO_IMAGE /celo/static-nodes.json /root/.celo/ +docker run --name celo-accounts -d --restart always -p 8545:8545 -v $PWD/accounts:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal +``` -### Stop the containers +Once the node is synced, we can register our accounts: -You can stop the Docker containers at any time without problem. If you stop your containers that means those containers stop of providing service. -The data dir of the validator and the proxy are Docker volumes mounted in the containers from the `celo-data-dir` you created at the very beginning. So if you don't remove that folder, you can stop or restart the containers without losing any data. +```bash +# On your local machine +celocli accounts:register --from $CELO_VALIDATOR_GROUP_ADDRESS --name +celocli accounts:register --from $CELO_VALIDATOR_ADDRESS --name +``` -You can stop the `celo-validator` and `celo-proxy` containers running: +### Lock up Celo Gold + +Lock up Celo Gold for both accounts in order to secure the right to register a Validator and Validator Group. The current requirement is 10k Celo Gold to register a validator, and 10k Celo Gold _per member validator_ to register a Validator Group. For Validators, this gold remains locked for approximately 60 days following deregistration. For groups, this gold remains locked for approximately 60 days following the removal of the Nth validator from the group. ```bash -docker stop celo-validator celo-proxy +# On your local machine +celocli lockedgold:lock --from $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 +celocli lockedgold:lock --from $CELO_VALIDATOR_ADDRESS --value 10000000000000000000000 ``` -And you can remove the containers (not the data dir) running: +### Run for election + +In order to be elected as a Validator, you will first need to register your group and Validator. Note that when registering a Validator Group, you need to specify a commission, which is the fraction of epoch rewards paid to the group by its members. + +We don't want to use our account key for validating, so first let's authorize the validator signing key: ```bash -docker rm -f celo-validator celo-proxy +# On your local machine +celocli account:authorize --from $CELO_VALIDATOR_ADDRESS --role validator --pop $CELO_VALIDATOR_SIGNER_POP --signer $CELO_VALIDATOR_SIGNER_ADDRESS ``` -### Running the Docker containers in the background +Register your Validator Group by running the following command. Note that because we did not authorize a Validator signer for our Validator Group account, we register the Validator Group with the account key. -There are different option for executing Docker containers in the background. The most typical one is to use in your docker run commands the `-d` option. Also for long running processes, specially when you run in a remote computer, you can use a tool like [screen](https://ss64.com/osx/screen.html). It allows to connect and disconnect from running processes providing an easy way to manage long run processes. +```bash +# On your local machine +celocli validatorgroup:register --from $CELO_VALIDATOR_GROUP_ADDRESS --commission 0.1 +``` -It's out of the scope of this documentation to go through the `screen` options, but you can use the following command format with your `docker` commands: +Next, register your Validator by running the following command. Note that because we have authorized a Validator signer, this step could also be performed on the Validator machine. Running it on the local machine allows us to avoid needing to install the celocli on the Validator machine. ```bash -screen -S -d -m +# On your local machine +celocli validator:register --from $CELO_VALIDATOR_ADDRESS --blsKey $CELO_VALIDATOR_BLS_PUBLIC_KEY --blsPop $CELO_VALIDATOR_BLS_SIGNATURE ``` -For example: +Affiliate your Validator with your Validator Group. Note that you will not be a member of this group until the Validator Group accepts you. This command could also be run from the Validator signer, if running on the validator machine. ```bash -screen -S celo-validator -d -m docker run --name celo-validator --restart always -p 127.0.0.1:8545:8545 ....... +# On your local machine +celocli validator:affiliate $CELO_VALIDATOR_GROUP_ADDRESS --from $CELO_VALIDATOR_ADDRESS ``` -You can list your existing `screen` sessions: +Accept the affiliation: ```bash -screen -ls +# On your local machine +celocli validatorgroup:member --accept $CELO_VALIDATOR_ADDRESS --from $CELO_VALIDATOR_GROUP_ADDRESS ``` -And re-atach to any of the existing sessions: +Use both accounts to vote for your Validator Group. Note that because we have not authorized a vote signer for either account, these transactions must be sent from the account keys. Since you're likely to need to place additional votes throughout the course of the stake-off, consider creating and authorizing vote signers for additional operational security. ```bash -screen -r -S celo-validator +# On your local machine +celocli election:vote --from $CELO_VALIDATOR_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 +celocli election:vote --from $CELO_VALIDATOR_GROUP_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 ``` -### Reference Script - -You can use (and modify if you want) this [reference bash script](../../../scripts/run-docker-validator-network.sh) automating all the above steps. It requires Docker and screen. +You’re all set! Note that elections are finalized at the end of each epoch, roughly once an hour in the Alfajores or Baklava Testnets. After that hour, if you get elected, your node will start participating BFT consensus and validating blocks. -You can see all the options using the following command: +You can inspect the current state of the validator elections by running: ```bash -./run-docker-validator-network.sh help +# On your local machine +celocli election:list ``` -## Get elected as validator +If you find your Validator still not getting elected you may need to faucet yourself more funds and lock more gold in order to be able to cast more votes for your Validator Group! -### Obtain and lock up some Celo Gold for staking +At any moment you can check the currently elected validators by running the following command: + +```bash +# On your local machine +celocli election:current +``` -To participate in The Great Celo Stake Off (aka TGCSO) and get fauceted it's necessary to register online via an [online form](https://docs.google.com/forms/d/e/1FAIpQLSfbn5hTJ4UIWpN92-o2qMTUB0UnrFsL0fm97XqGe4VhhN_r5A/viewform). +### Running the Attestation Service -### Submitting transactions +As part of the [lightweight identity protocol](/celo-codebase/protocol/identity), Validators are expected to run an [Attestation Service](https://github.com/celo-org/celo-monorepo/tree/master/packages/attestation-service) to provide attestations that allow users to map their phone number to an account on Celo. -We created the `celocli` to allow users to easily interact with the smart contracts on the command line. The `celocli` generally expects a celo node, by default we are using the RPC API interface at `http://localhost:8545`. To submit transactions, the node should have the account unlocked (the one that is usually specified with `--from`). You can specify that through the `--unlock` parameter when starting your celo node. Otherwise you can use `celocli` to unlock the account with `celocli account:unlock` (assuming you have the `personal` module enabled). +Just like with the Validator signer, we'll want to authorize a separate Attestation signer. For that let's start our node on the Attestations machine: -### Lock up Celo Gold +```bash +# On the Attestation machine +# You have to export CELO_VALIDATOR_ADDRESS on this machine +export $CELO_VALIDATOR_ADDRESS= +mkdir -p celo-data-dir/attestations +cd celo-data-dir/attestations +docker run -v $PWD/attestations:/root/.celo $CELO_IMAGE init /celo/genesis.json +docker run -v $PWD/attestations:/root/.celo --entrypoint cp $CELO_IMAGE /celo/static-nodes.json /root/.celo/ +docker run -v $PWD/attestations:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account new" +export ATTESTATION_SIGNER_ADDRESS= +``` -Lock up Celo Gold for both accounts in order to secure the right to register a Validator and Validator Group. The current requirement is 10k Celo Gold to register a validator, and 10k Celo Gold _per member validator_ to register a Validator Group. For Validators, this gold remains locked for approximately 60 days following deregistration. For groups, this gold remains locked for approximately 60 days following the removal of the Nth validator from the group. +Let's run the node in the background (both to generate the proof-of-possession now and to run the attestation service later.) ```bash -celocli lockedgold:lock --from $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 -celocli lockedgold:lock --from $CELO_VALIDATOR_ADDRESS --value 10000000000000000000000 +# On the Attestation machine +docker run --name celo-attestations -d --restart always -p 8545:8545 -v $PWD/accounts:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal --unlock $ATTESTATION_SIGNER_ADDRESS ``` -### Run for election +Generate the proof-of-possession for the attestation signer -In order to be elected as a Validator, you will first need to register your group and Validator. Note that when registering a Validator Group, you need to specify a commission, which is the fraction of epoch rewards paid to the group by its members. +```bash +# On the Attestation machine +celocli account:proof-of-possession --signer $ATTESTATION_SIGNER_ADDRESS --account $CELO_VALIDATOR_ADDRESS +``` -Register your Validator Group: +With this proof, authorize the attestation signer on your local machine: ```bash -celocli validatorgroup:register --from $CELO_VALIDATOR_GROUP_ADDRESS --commission 0.1 +# On your local machine +celocli account:authorize --from $CELO_VALIDATOR_ADDRESS --role attestation --pop --signer $ATTESTATION_SIGNER_ADDRESS ``` -Register your Validator: +By now, you should have setup your Validator account appropriately. You can finish the actual deploy of the attestation service under the [Attestation Service at the documentation page](running-attestation-service.md). + +### Stop the containers + +You can stop the Docker containers at any time without problem. If you stop your containers that means those containers stop of providing service. +The data dir of the validator and the proxy are Docker volumes mounted in the containers from the `celo-data-dir` you created at the very beginning. So if you don't remove that folder, you can stop or restart the containers without losing any data. + +You can stop the `celo-validator` and `celo-proxy` containers running: ```bash -celocli validator:register --from $CELO_VALIDATOR_ADDRESS --blsKey $CELO_VALIDATOR_BLS_PUBLIC_KEY --blsPop $CELO_VALIDATOR_BLS_SIGNATURE +docker stop celo-validator celo-proxy ``` -Affiliate your Validator with your Validator Group. Note that you will not be a member of this group until the Validator Group accepts you: +And you can remove the containers (not the data dir) running: ```bash -celocli validator:affiliate $CELO_VALIDATOR_GROUP_ADDRESS --from $CELO_VALIDATOR_ADDRESS +docker rm -f celo-validator celo-proxy ``` -Accept the affiliation: +### Running the Docker containers in the background + +There are different option for executing Docker containers in the background. The most typical one is to use in your docker run commands the `-d` option. Also for long running processes, specially when you run in a remote computer, you can use a tool like [screen](https://ss64.com/osx/screen.html). It allows to connect and disconnect from running processes providing an easy way to manage long run processes. + +It's out of the scope of this documentation to go through the `screen` options, but you can use the following command format with your `docker` commands: ```bash -celocli validatorgroup:member --accept $CELO_VALIDATOR_ADDRESS --from $CELO_VALIDATOR_GROUP_ADDRESS +screen -S -d -m ``` -Use both accounts to vote for your Validator Group: +For example: ```bash -celocli election:vote --from $CELO_VALIDATOR_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 -celocli election:vote --from $CELO_VALIDATOR_GROUP_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value 10000000000000000000000 +screen -S celo-validator -d -m docker run --name celo-validator --restart always -p 127.0.0.1:8545:8545 ....... ``` -You’re all set! Note that elections are finalized at the end of each epoch, roughly once an hour in the Alfajores or Baklava Testnets. After that hour, if you get elected, your node will start participating BFT consensus and validating blocks. +You can list your existing `screen` sessions: + +```bash +screen -ls +``` -You can inspect the current state of voting by running: +And re-atach to any of the existing sessions: ```bash -celocli election:list +screen -r -S celo-validator ``` -If you find your Validator still not getting elected you may need to faucet yourself more funds and lock more gold in order to be able to cast more votes for your Validator Group! +### Reference Script -At any moment you can check the currently elected validators by running the following command: +You can use (and modify if you want) this [reference bash script](../../../scripts/run-docker-validator-network.sh) automating all the above steps. It requires Docker and screen. + +You can see all the options using the following command: ```bash -celocli election:current +./run-docker-validator-network.sh help ``` ### Stop Validating diff --git a/packages/docs/getting-started/running-attestation-service.md b/packages/docs/getting-started/running-attestation-service.md index 5894b8406bd..b7aba2dcd74 100644 --- a/packages/docs/getting-started/running-attestation-service.md +++ b/packages/docs/getting-started/running-attestation-service.md @@ -15,14 +15,14 @@ As part of the [lightweight identity protocol](/celo-codebase/protocol/identity) The service needs the following environment variables: -| Variable | Explanation | -| -------------------------- | ------------------------------------------------------------------------------------------------------------------ | -| DATABASE_URL | The URL under which your database is accessible, currently supported are `postgres://`, `mysql://` and `sqlite://` | | -| CELO_PROVIDER | The URL under which a celo blockchain node is reachable and the attestation signer is unlocked | | -| ACCOUNT_ADDRESS | The address of the validator account | | -| ATTESTATION_SIGNER_ADDRESS | The address of the attestation signer that was authorized by the validator account | | -| APP_SIGNATURE | The hash with which clients can auto-read SMS messages on android | | -| SMS_PROVIDERS | A comma-separated list of providers you want to configure, we currently support `nexmo` & `twilio` | | +| Variable | Explanation | +| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| DATABASE_URL | The URL under which your database is accessible, currently supported are `postgres://`, `mysql://` and `sqlite://` | | +| CELO_PROVIDER | The endpoint under which your node with the unlocked attestation signer key is available, should be `http://localhost:8545` if you followed the [instructions](./running-a-validator) | | +| CELO_VALIDATOR_ADDRESS | The address of the Validator account | | +| ATTESTATION_SIGNER_ADDRESS | The address of the attestation signer that was authorized by the Validator account | | +| APP_SIGNATURE | The hash with which clients can auto-read SMS messages on android | | +| SMS_PROVIDERS | A comma-separated list of providers you want to configure, we currently support `nexmo` & `twilio` | | A part of that we are going to setup the following environment variable about the Attestation Service Docker image: @@ -34,19 +34,9 @@ export CELO_IMAGE_ATTESTATION="us.gcr.io/celo-testnet/celo-monorepo:attestation- Currently the Sms providers supported are Nexmo & Twilio. You can create your user account in the provider of your election using the [Nexmo Sign Up form](https://dashboard.nexmo.com/sign-up) or the [Twilio Sign Up form](https://www.twilio.com/try-twilio). -### Nexmo - -Here is the list of the enviromnet variables needed to use the Nexmo SMS broker: - -| Variable | Explanation | -| --------------- | --------------------------------------------------------------- | -| NEXMO_KEY | The API key to the Nexmo API | -| NEXMO_SECRET | The API secret to the Nexmo API | -| NEXMO_BLACKLIST | A comma-sperated list of country codes you do not want to serve | - ### Twilio -If you prefer using Twilio, this is list of the variables to use: +Twilio is the most common and popular provider. For that you will need to provision the following variables: | Variable | Explanation | | ---------------------------- | --------------------------------------------------------------- | @@ -55,25 +45,24 @@ If you prefer using Twilio, this is list of the variables to use: | TWILIO_AUTH_TOKEN | The API authentication token | | TWILIO_BLACKLIST | A comma-sperated list of country codes you do not want to serve | -## Accounts Configuration +**Setup** +After you signed up for Twilio at [https://www.twilio.com/try-twilio](https://www.twilio.com/try-twilio), you should see your `ACCOUNT SID` and your `AUTH_TOKEN` in the top right of the console. You'll also want to enter in a credit card to fund the account. For most text messages, the costs will be very low. Find a more comprehensive price list at [https://www.twilio.com/sms/pricing](https://www.twilio.com/sms/pricing). If there are countries that you do not want to serve, you can specify them with the `TWILIO_BLACKLIST`. -First, the validator account needs to authorize the attestation signer. With `celocli` connected to a node that has the attestation signer unlocked, let's create a proof-of-posession: - -```bash -celocli account:proof-of-possession --signer $ATTESTATION_SIGNER_ADDRESS --account $CELO_VALIDATOR_ADDRESS -``` +To actually be able to send SMS, you need to create a messaging service under [Programmable SMS > SMS](https://www.twilio.com/console/sms/services). The resulting `SID` you want to specify under the `TWILIO_MESSAGING_SERVICE_SID`. Now that you have provisioned your messaging service, you need to buy at least 1 phone number to send SMS from. You can do so under the `Numbers` option of the messaging service page. To maximize the chances of reliable and prompt SMS sending (and thus attestation fee revenue), you can buy numbers in many locales, and Twilio will intelligently select the best number to send each SMS. -That will give you a signature that you can then use to authorize the key (with `celocli` connected to the node that has the validator account unlocked): +### Nexmo -```bash -celocli account:authorize --from $CELO_VALIDATOR_ADDRESS -r attestation --pop --signer $ATTESTATION_SIGNER_ADDRESS -``` +Here is the list of the enviromnet variables needed to use the Nexmo SMS broker: -The Attestation Service needs to connect to the node that has the attestation signer unlocked, configured via `CELO_PROVIDER`. +| Variable | Explanation | +| --------------- | --------------------------------------------------------------- | +| NEXMO_KEY | The API key to the Nexmo API | +| NEXMO_SECRET | The API secret to the Nexmo API | +| NEXMO_BLACKLIST | A comma-sperated list of country codes you do not want to serve | #### Database Configuration -For storing and retrieving the attestation requests the service needs a database to persist that information. Currently `sqlite`, `postgres` and `mysql` are supported. For testing purposes you can use `sqlite` but it's recommended to run a stand-alone database server using `mysql` or `postgres` if your intention is running the Attestation Service in a production environment. +For storing and retrieving the attestation requests the service needs a database to persist that information. Currently `sqlite`, `postgres` and `mysql` are supported. For testing purposes you can use `sqlite` but it's recommended to run a stand-alone database server using `mysql` or `postgres` if your intention is running the Attestation Service in a production environment. If you are running on a popular cloud provider, consider using their hosted SQL services. Depending on your database technology you need to create a database with the access for a specific user and password. @@ -85,23 +74,17 @@ export DATABASE_URL="mysql://user:password@mysql.example.com:3306/attestation-se export DATABASE_URL="postgres://user:password@postgres.example.com:5432/attestation-service" ``` -You can find the migration scripts for creating the schema at the `celo-monorepo`, `packages/attestation-service` folder. From there, after setting up the `DATABASE_URL` env variable you can run the following command: - -```bash -yarn run db:migrate -``` - ## Executing the Attestation Service The following command for running the Attestation Service is using Nexmo, but you can adapt for using Twilio easily: ```bash -docker run -v $PWD/attestation-service:/celo-monorepo/packages/attestation-service/db --name -d --restart always --entrypoint /bin/bash -e ATTESTATION_SIGNER_ADDRESS=$ATTESTATION_SIGNER_ADDRESS -e ACCOUNT_ADDRESS=0x$CELO_VALIDATOR_ADDRESS -e CELO_PROVIDER=$CELO_PROVIDER -e DATABASE_URL=$DATABASE_URL -e SMS_PROVIDERS=nexmo -e NEXMO_KEY=$NEXMO_KEY -e NEXMO_SECRET=$NEXMO_SECRET -e NEXMO_BLACKLIST=$NEXMO_BLACKLIST -d -p 3000:80 $CELO_IMAGE_ATTESTATION -c " cd /celo-monorepo/packages/attestation-service && touch db/attestation.db && yarn run db:migrate && yarn start " +docker run --name celo-attestation-service -d --restart always --entrypoint /bin/bash -e ATTESTATION_SIGNER_ADDRESS=$ATTESTATION_SIGNER_ADDRESS -e CELO_VALIDATOR_ADDRESS=0x$CELO_VALIDATOR_ADDRESS -e CELO_PROVIDER=$CELO_PROVIDER -e DATABASE_URL=$DATABASE_URL -e SMS_PROVIDERS=nexmo -e NEXMO_KEY=$NEXMO_KEY -e NEXMO_SECRET=$NEXMO_SECRET -e NEXMO_BLACKLIST=$NEXMO_BLACKLIST -p 3000:80 $CELO_IMAGE_ATTESTATION -c " cd /celo-monorepo/packages/attestation-service && yarn run db:migrate && yarn start " ``` ## Registering the Attestation Service -In order for users to request attestations from your service, you need to register the endpoint under which your service is reachable in your [metadata](/celo-codebase/protocol/identity/metadata). The following accounts require `celocli` to be connected to a node that has the validator account unlocked. +In order for users to request attestations from your service, you need to register the endpoint under which your service is reachable in your [metadata](/celo-codebase/protocol/identity/metadata). Run the following commands on your local machine where `$CELO_VALIDATOR_ADDRESS` is unlocked. ```bash celocli account:create-metadata ./metadata.json --from $CELO_VALIDATOR_ADDRESS @@ -110,10 +93,10 @@ celocli account:create-metadata ./metadata.json --from $CELO_VALIDATOR_ADDRESS The `ATTESTATION_SERVICE_URL` variable stores the URL to access the Attestation Service deployed. In the following command we specify the URL where this Attestation Service is: ```bash -celocli account:claim-attestation-service-url ./metadata.json --url $ATTESTATION_SERVICE_URL +celocli account:claim-attestation-service-url ./metadata.json --url $ATTESTATION_SERVICE_URL --from $CELO_VALIDATOR_ADDRESS ``` -And then host your metadata somewhere reachable via HTTP. You can use a service like [gist.github.com](https://gist.github.com) (remember to register the raw link) +And then host your metadata somewhere reachable via HTTP. You can use a service like [gist.github.com](https://gist.github.com). Create a gist with the contents of the file and then click on the `Raw` buttton to receive the permalink to the machine-readable file. ```bash celocli account:register-metadata --url --from $CELO_VALIDATOR_ADDRESS diff --git a/packages/helm-charts/attestation-service/templates/attestation.statefulset.yaml b/packages/helm-charts/attestation-service/templates/attestation.statefulset.yaml index 6b987ee74d9..48612116636 100644 --- a/packages/helm-charts/attestation-service/templates/attestation.statefulset.yaml +++ b/packages/helm-charts/attestation-service/templates/attestation.statefulset.yaml @@ -131,7 +131,7 @@ spec: - | yarn db:migrate sleep 5 - ATTESTATION_SIGNER_ADDRESS=`cat /root/.celo/attestationSignerAddress` ACCOUNT_ADDRESS=`cat /root/.celo/address` yarn start + ATTESTATION_SIGNER_ADDRESS=`cat /root/.celo/attestationSignerAddress` CELO_VALIDATOR_ADDRESS=`cat /root/.celo/address` yarn start ports: - name: http containerPort: 3000 From c82bfc4bec4ae25e39d7a5d83cff602d5cb5d084 Mon Sep 17 00:00:00 2001 From: "Victor \"Nate\" Graf" Date: Wed, 27 Nov 2019 02:36:26 -0600 Subject: [PATCH 05/13] Have validators use ephemeral node keys by default (#1922) * remove references to the nodekey flag * add validator peers after they are brought online * add back addStaticPeers function * set node keys for tx-nodes as bootstrapping relies on it * remove reference to setting the node key from the documentation * remove og templates * remove minerthreads flag and connect validators only to zero * prevent writing validator key to disk * revert pointless changes * prevent writing validator private key to disk * Revert "remove og templates" This reverts commit 743696d556369053775fea3937cdcd9e49e3d49b. * remove unused og templates * refactor import script to avoid bash-only fucntionality * fix syntax errors * fix map function in connect peers * fix args to account-address function * reinstate helper code that will be removed later anyway * fix error of calling celotool where it is not available * add ampersand * peer only validators * lazily resolve enodes from ports --- .../src/e2e-tests/governance_tests.ts | 7 ++-- packages/celotool/src/e2e-tests/sync_tests.ts | 7 ++-- .../celotool/src/e2e-tests/transfer_tests.ts | 5 +-- packages/celotool/src/e2e-tests/utils.ts | 42 +++++++++++++------ .../testnet/templates/_helpers.tpl | 1 - .../testnet/templates/gethminer1.yaml | 30 ------------- .../testnet/templates/gethminer2.yaml | 5 --- .../testnet/templates/gethminer3.yaml | 5 --- .../testnet/templates/gethminer4.yaml | 5 --- .../testnet/templates/gethtx1.yaml | 7 ---- .../testnet/templates/gethtx3.yaml | 7 ---- .../testnet/templates/gethtx4.yaml | 7 ---- .../templates/validators.statefulset.yaml | 4 +- .../testnet/modules/validator/startup.sh | 7 ++-- 14 files changed, 43 insertions(+), 96 deletions(-) delete mode 100644 packages/helm-charts/testnet/templates/gethminer1.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethminer2.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethminer3.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethminer4.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethtx1.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethtx3.yaml delete mode 100644 packages/helm-charts/testnet/templates/gethtx4.yaml diff --git a/packages/celotool/src/e2e-tests/governance_tests.ts b/packages/celotool/src/e2e-tests/governance_tests.ts index 6173d66a13e..3b08f348ea8 100644 --- a/packages/celotool/src/e2e-tests/governance_tests.ts +++ b/packages/celotool/src/e2e-tests/governance_tests.ts @@ -9,7 +9,6 @@ import Web3 from 'web3' import { assertAlmostEqual, getContext, - getEnode, GethInstanceConfig, importGenesis, initAndStartGeth, @@ -238,7 +237,7 @@ describe('governance tests', () => { wsport: 8555, rpcport: 8557, privateKey: groupPrivateKey.slice(2), - peers: [await getEnode(8545)], + peers: [8545], }, ] await Promise.all( @@ -257,7 +256,7 @@ describe('governance tests', () => { port: 30315, wsport: 8559, privateKey: rotation0PrivateKey.slice(2), - peers: [await getEnode(8557)], + peers: [8557], }, { name: 'validator2KeyRotation1', @@ -267,7 +266,7 @@ describe('governance tests', () => { port: 30317, wsport: 8561, privateKey: rotation1PrivateKey.slice(2), - peers: [await getEnode(8557)], + peers: [8557], }, ] await Promise.all( diff --git a/packages/celotool/src/e2e-tests/sync_tests.ts b/packages/celotool/src/e2e-tests/sync_tests.ts index eab5f289268..b9e495f1011 100644 --- a/packages/celotool/src/e2e-tests/sync_tests.ts +++ b/packages/celotool/src/e2e-tests/sync_tests.ts @@ -1,7 +1,6 @@ import { assert } from 'chai' import Web3 from 'web3' import { - getEnode, GethInstanceConfig, getHooks, initAndStartGeth, @@ -36,7 +35,7 @@ describe('sync tests', function(this: any) { lightserv: true, port: 30311, rpcport: 8553, - peers: [await getEnode(8545)], + peers: [8545], } await initAndStartGeth(hooks.gethBinaryPath, fullInstance) const web3 = new Web3('http://localhost:8553') @@ -57,7 +56,7 @@ describe('sync tests', function(this: any) { port: 30313, rpcport: 8555, lightserv: syncmode !== 'light' && syncmode !== 'ultralight', - peers: [await getEnode(8553)], + peers: [8553], } await initAndStartGeth(hooks.gethBinaryPath, syncInstance) }) @@ -94,7 +93,7 @@ describe('sync tests', function(this: any) { this.timeout(0) const instance: GethInstanceConfig = gethConfig.instances[0] await killInstance(instance) - await initAndStartGeth(hooks.gethBinaryPath, instance) + await initAndStartGeth(hooks.gethBinaryPath, { ...instance, peers: [8547] }) await sleep(120) // wait for round change / resync const address = (await web3.eth.getAccounts())[0] const currentBlock = await web3.eth.getBlock('latest') diff --git a/packages/celotool/src/e2e-tests/transfer_tests.ts b/packages/celotool/src/e2e-tests/transfer_tests.ts index 80016d596ce..dca7df52808 100644 --- a/packages/celotool/src/e2e-tests/transfer_tests.ts +++ b/packages/celotool/src/e2e-tests/transfer_tests.ts @@ -9,7 +9,6 @@ import { assert } from 'chai' import Web3 from 'web3' import { TransactionReceipt } from 'web3/types' import { - getEnode, GethInstanceConfig, getHooks, GethTestConfig, @@ -196,7 +195,7 @@ describe('Transfer tests', function(this: any) { // We need to set an etherbase here so that the full node will accept transactions from // light clients. etherbase: FeeRecipientAddress, - peers: [await getEnode(8545)], + peers: [8545], } await initAndStartGeth(hooks.gethBinaryPath, fullInstance) @@ -227,7 +226,7 @@ describe('Transfer tests', function(this: any) { port: 30307, rpcport: 8549, privateKey: DEF_FROM_PK, - peers: [await getEnode(8547)], + peers: [8547], }) // Reset contracts to send RPCs through transferring node. diff --git a/packages/celotool/src/e2e-tests/utils.ts b/packages/celotool/src/e2e-tests/utils.ts index 05efcd8e954..dd5c4fcb6f7 100644 --- a/packages/celotool/src/e2e-tests/utils.ts +++ b/packages/celotool/src/e2e-tests/utils.ts @@ -10,10 +10,8 @@ import { generateGenesis, getPrivateKeysFor, getValidators, - privateKeyToPublicKey, Validator, } from '../lib/generate_utils' -import { getEnodeAddress } from '../lib/geth' import { ensure0x } from '../lib/utils' export interface GethInstanceConfig { @@ -26,7 +24,7 @@ export interface GethInstanceConfig { lightserv?: boolean privateKey?: string etherbase?: string - peers?: string[] + peers?: number[] pid?: number } @@ -244,7 +242,8 @@ export async function killInstance(instance: GethInstanceConfig) { } } -export async function addStaticPeers(datadir: string, enodes: string[]) { +export async function addStaticPeers(datadir: string, ports: number[]) { + const enodes = await Promise.all(ports.map((port) => getEnode(port))) fs.writeFileSync(`${datadir}/static-nodes.json`, JSON.stringify(enodes)) } @@ -326,7 +325,7 @@ export async function startGeth(gethBinaryPath: string, instance: GethInstanceCo } if (validating) { - gethArgs.push('--mine', '--minerthreads=10', `--nodekeyhex=${privateKey}`) + gethArgs.push('--mine') } if (privateKey) { @@ -438,6 +437,29 @@ export async function initAndStartGeth(gethBinaryPath: string, instance: GethIns return startGeth(gethBinaryPath, instance) } +// Add validator 0 as a peer of each other validator. +async function connectValidatorPeers(gethConfig: GethTestConfig) { + const admins = gethConfig.instances + .filter(({ wsport, rpcport, validating }) => validating && (wsport || rpcport)) + .map( + ({ wsport, rpcport }) => + new Admin(`${wsport ? 'ws' : 'http'}://localhost:${wsport || rpcport}`) + ) + const enodes = await Promise.all(admins.map(async (admin) => (await admin.getNodeInfo()).enode)) + await Promise.all( + admins.map(async (admin, i) => { + await Promise.all( + enodes.map(async (enode, j) => { + if (i === j) { + return + } + await admin.addPeer(enode) + }) + ) + }) + ) +} + export function getContext(gethConfig: GethTestConfig) { const mnemonic = 'jazz ripple brown cloth door bridge pen danger deer thumb cable prepare negative library vast' @@ -446,9 +468,6 @@ export function getContext(gethConfig: GethTestConfig) { const validatorPrivateKeys = getPrivateKeysFor(AccountType.VALIDATOR, mnemonic, numValidators) const attestationKeys = getPrivateKeysFor(AccountType.ATTESTATION, mnemonic, numValidators) const validators = getValidators(mnemonic, numValidators) - const validatorEnodes = validatorPrivateKeys.map((x: any, i: number) => - getEnodeAddress(privateKeyToPublicKey(x), '127.0.0.1', validatorInstances[i].port) - ) const argv = require('minimist')(process.argv.slice(2)) const branch = argv.branch || 'master' const gethRepoPath = argv.localgeth || '/tmp/geth' @@ -464,16 +483,12 @@ export function getContext(gethConfig: GethTestConfig) { let validatorIndex = 0 for (const instance of gethConfig.instances) { if (instance.validating) { - // Automatically connect validator nodes to eachother. - const otherValidators = validatorEnodes.filter( - (__: string, i: number) => i !== validatorIndex - ) - instance.peers = (instance.peers || []).concat(otherValidators) instance.privateKey = instance.privateKey || validatorPrivateKeys[validatorIndex] validatorIndex++ } await initAndStartGeth(gethBinaryPath, instance) } + await connectValidatorPeers(gethConfig) if (gethConfig.migrate || gethConfig.migrateTo) { await migrateContracts( validatorPrivateKeys, @@ -511,6 +526,7 @@ export function getContext(gethConfig: GethTestConfig) { return startGeth(gethBinaryPath, instance) }) ) + await connectValidatorPeers(gethConfig) } const after = () => killGeth() diff --git a/packages/helm-charts/testnet/templates/_helpers.tpl b/packages/helm-charts/testnet/templates/_helpers.tpl index 6744a723271..35c04dc78cd 100644 --- a/packages/helm-charts/testnet/templates/_helpers.tpl +++ b/packages/helm-charts/testnet/templates/_helpers.tpl @@ -199,7 +199,6 @@ spec: --metrics \ --mine \ --networkid=${NETWORK_ID} \ - --nodekey=/root/.celo/account/{{ .Node.name}}PrivateKey \ --password=/root/.celo/account/accountSecret \ --rpc \ --rpcaddr 0.0.0.0 \ diff --git a/packages/helm-charts/testnet/templates/gethminer1.yaml b/packages/helm-charts/testnet/templates/gethminer1.yaml deleted file mode 100644 index 35a5bfa1d74..00000000000 --- a/packages/helm-charts/testnet/templates/gethminer1.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{ if eq (.Values.geth.validators | toString) "og" }} -{{ template "celo.miner-deployment" (dict "Values" .Values "Files" .Files "Release" .Release "Chart" .Chart "Node" .Values.geth.account.gethminer1 ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethminer1-pvc" }} ---- -kind: Service -apiVersion: v1 -metadata: - name: {{ template "ethereum.fullname" . }}-gethminer1 - labels: - app: {{ template "ethereum.name" . }} - chart: {{ template "ethereum.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - component: gethminer1 -spec: - selector: - app: {{ template "ethereum.name" . }} - release: {{ .Release.Name }} - component: gethminer1 - type: {{ .Values.geth.miner.service.type }} - sessionAffinity: ClientIP - ports: - - name: discovery - port: 30303 - - name: rpc - port: 8545 - - name: ws - port: 8546 -{{ end }} diff --git a/packages/helm-charts/testnet/templates/gethminer2.yaml b/packages/helm-charts/testnet/templates/gethminer2.yaml deleted file mode 100644 index 2051fe25af3..00000000000 --- a/packages/helm-charts/testnet/templates/gethminer2.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{ if eq (.Values.geth.validators | toString) "og" }} -{{ template "celo.miner-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "Node" .Values.geth.account.gethminer2 ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethminer2-pvc" }} -{{ end }} diff --git a/packages/helm-charts/testnet/templates/gethminer3.yaml b/packages/helm-charts/testnet/templates/gethminer3.yaml deleted file mode 100644 index 11b07da4c41..00000000000 --- a/packages/helm-charts/testnet/templates/gethminer3.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{ if eq (.Values.geth.validators | toString) "og" }} -{{ template "celo.miner-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "Node" .Values.geth.account.gethminer3 ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethminer3-pvc" }} -{{ end }} diff --git a/packages/helm-charts/testnet/templates/gethminer4.yaml b/packages/helm-charts/testnet/templates/gethminer4.yaml deleted file mode 100644 index 7cfa4f46d41..00000000000 --- a/packages/helm-charts/testnet/templates/gethminer4.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{ if eq (.Values.geth.validators | toString) "og" }} -{{ template "celo.miner-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "Node" .Values.geth.account.gethminer4 ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethminer4-pvc" }} -{{ end }} diff --git a/packages/helm-charts/testnet/templates/gethtx1.yaml b/packages/helm-charts/testnet/templates/gethtx1.yaml deleted file mode 100644 index 68239a5ba40..00000000000 --- a/packages/helm-charts/testnet/templates/gethtx1.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{ if eq (.Values.geth.tx_nodes | toString) "og" }} -{{ template "celo.tx-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx1" ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethtx1-pvc" }} ---- -{{ template "celo.tx-service" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx1" "loadbalancer_ip" .Values.geth.tx.gethtx1.loadBalancerIp) }} -{{ end }} \ No newline at end of file diff --git a/packages/helm-charts/testnet/templates/gethtx3.yaml b/packages/helm-charts/testnet/templates/gethtx3.yaml deleted file mode 100644 index d06e3980114..00000000000 --- a/packages/helm-charts/testnet/templates/gethtx3.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{ if eq (.Values.geth.tx_nodes | toString) "og" }} -{{ template "celo.tx-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx3" ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethtx3-pvc" }} ---- -{{ template "celo.tx-service" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx3" "loadbalancer_ip" .Values.geth.tx.gethtx3.loadBalancerIp) }} -{{ end }} \ No newline at end of file diff --git a/packages/helm-charts/testnet/templates/gethtx4.yaml b/packages/helm-charts/testnet/templates/gethtx4.yaml deleted file mode 100644 index ed88c5af058..00000000000 --- a/packages/helm-charts/testnet/templates/gethtx4.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{ if eq (.Values.geth.tx_nodes | toString) "og" }} -{{ template "celo.tx-deployment" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx4" ) }} ---- -{{ template "celo.node-pvc" dict "Values" .Values "Release" .Release "Chart" .Chart "pvc_name" "gethtx4-pvc" }} ---- -{{ template "celo.tx-service" (dict "Values" .Values "Release" .Release "Files" .Files "Chart" .Chart "node_name" "gethtx4" "loadbalancer_ip" .Values.geth.tx.gethtx4.loadBalancerIp) }} -{{ end }} \ No newline at end of file diff --git a/packages/helm-charts/testnet/templates/validators.statefulset.yaml b/packages/helm-charts/testnet/templates/validators.statefulset.yaml index ed86ddc9d29..1dc10183e4a 100644 --- a/packages/helm-charts/testnet/templates/validators.statefulset.yaml +++ b/packages/helm-charts/testnet/templates/validators.statefulset.yaml @@ -104,7 +104,8 @@ spec: args: - "-c" - | - geth account import --password /root/.celo/account/accountSecret /root/.celo/pkey || true + geth account import --password /root/.celo/account/accountSecret /root/.celo/pkey + rm /root/.celo/pkey volumeMounts: - name: data mountPath: /root/.celo @@ -141,7 +142,6 @@ spec: --wsaddr 0.0.0.0 \ --wsorigins=* \ --wsapi=eth,net,web3,debug \ - --nodekey=/root/.celo/pkey \ --etherbase=${ACCOUNT_ADDRESS} \ --networkid=${NETWORK_ID} \ --syncmode=full \ diff --git a/packages/terraform-modules/testnet/modules/validator/startup.sh b/packages/terraform-modules/testnet/modules/validator/startup.sh index 2709d27c12f..76595151b9b 100644 --- a/packages/terraform-modules/testnet/modules/validator/startup.sh +++ b/packages/terraform-modules/testnet/modules/validator/startup.sh @@ -83,14 +83,16 @@ docker run -v $DATA_DIR:$DATA_DIR --name geth --net=host --entrypoint /bin/sh -d echo -n '${genesis_content_base64}' | base64 -d > /var/geth/genesis.json && \ echo -n '${rid}' > $DATA_DIR/replica_id && \ echo -n '${ip_address}' > $DATA_DIR/ipAddress && \ - echo -n '$PRIVATE_KEY' > $DATA_DIR/pkey && \ echo -n '$ACCOUNT_ADDRESS' > $DATA_DIR/address && \ echo -n '$BOOTNODE_ENODE_ADDRESS' > $DATA_DIR/bootnodeEnodeAddress && \ echo -n '$BOOTNODE_ENODE' > $DATA_DIR/bootnodeEnode && \ echo -n '$GETH_ACCOUNT_SECRET' > $DATA_DIR/account/accountSecret && \ geth init /var/geth/genesis.json ) && ( \ - geth account import --password $DATA_DIR/account/accountSecret $DATA_DIR/pkey ; \ + TMP_PRIVATE_KEY_FILE=$(mktemp) && \ + echo -n $PRIVATE_KEY > $TMP_PRIVATE_KEY_FILE && \ + geth account import --password $DATA_DIR/account/accountSecret $TMP_PRIVATE_KEY_FILE && \ + rm $TMP_PRIVATE_KEY_FILE ; \ geth \ --bootnodes=enode://$BOOTNODE_ENODE \ --password=$DATA_DIR/account/accountSecret \ @@ -105,7 +107,6 @@ docker run -v $DATA_DIR:$DATA_DIR --name geth --net=host --entrypoint /bin/sh -d --wsaddr 0.0.0.0 \ --wsorigins=* \ --wsapi=eth,net,web3 \ - --nodekey=$DATA_DIR/pkey \ --etherbase=$ACCOUNT_ADDRESS \ --networkid=${network_id} \ --syncmode=full \ From 21432c2bc7b3ad87a1df486ba31316989c057e09 Mon Sep 17 00:00:00 2001 From: Nam Chu Hoai Date: Wed, 27 Nov 2019 00:52:43 -0800 Subject: [PATCH 06/13] Generate the pop for the attestation service with geth (#1931) --- .../getting-started/running-a-validator.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/docs/getting-started/running-a-validator.md b/packages/docs/getting-started/running-a-validator.md index c894c46bc79..0ddeb8efcae 100644 --- a/packages/docs/getting-started/running-a-validator.md +++ b/packages/docs/getting-started/running-a-validator.md @@ -386,25 +386,27 @@ docker run -v $PWD/attestations:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE export ATTESTATION_SIGNER_ADDRESS= ``` -Let's run the node in the background (both to generate the proof-of-possession now and to run the attestation service later.) +Let's generate the proof-of-possession for the attestation signer ```bash # On the Attestation machine -docker run --name celo-attestations -d --restart always -p 8545:8545 -v $PWD/accounts:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin,personal --unlock $ATTESTATION_SIGNER_ADDRESS +# Note that you have to export CELO_VALIDATOR_ADDRESS on this machine +export $CELO_VALIDATOR_ADDRESS= +docker run -v $PWD/attestations:/root/.celo --entrypoint /bin/sh -it $CELO_IMAGE -c "geth account proof-of-possession $CELO_ATTESTATION_SIGNER_ADDRESS $CELO_VALIDATOR_ADDRESS" ``` -Generate the proof-of-possession for the attestation signer +With this proof, authorize the attestation signer on your local machine: ```bash -# On the Attestation machine -celocli account:proof-of-possession --signer $ATTESTATION_SIGNER_ADDRESS --account $CELO_VALIDATOR_ADDRESS +# On your local machine +celocli account:authorize --from $CELO_VALIDATOR_ADDRESS --role attestation --pop --signer $ATTESTATION_SIGNER_ADDRESS ``` -With this proof, authorize the attestation signer on your local machine: +You can now run the node for the attestation service in the background: ```bash -# On your local machine -celocli account:authorize --from $CELO_VALIDATOR_ADDRESS --role attestation --pop --signer $ATTESTATION_SIGNER_ADDRESS +# On the Attestation machine +docker run --name celo-attestations -d --restart always -p 8545:8545 -v $PWD/accounts:/root/.celo $CELO_IMAGE --verbosity 3 --networkid $NETWORK_ID --syncmode full --rpc --rpcaddr 0.0.0.0 --rpcapi eth,net,web3,debug,admin --unlock $ATTESTATION_SIGNER_ADDRESS ``` By now, you should have setup your Validator account appropriately. You can finish the actual deploy of the attestation service under the [Attestation Service at the documentation page](running-attestation-service.md). From c57f23fa09a8fe6b12c5e287185345229685a799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Guti=C3=A9rrez?= Date: Wed, 27 Nov 2019 17:25:56 +0100 Subject: [PATCH 07/13] Sort invite contact list (#1936) --- packages/mobile/src/account/Invite.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mobile/src/account/Invite.tsx b/packages/mobile/src/account/Invite.tsx index 0b8dd33ebd0..afe0e90e638 100644 --- a/packages/mobile/src/account/Invite.tsx +++ b/packages/mobile/src/account/Invite.tsx @@ -93,7 +93,9 @@ class Invite extends React.Component { buildSections = (): Section[] => { const { t, recipientCache } = this.props // Only recipients without an address are invitable - const invitableRecipients = Object.values(recipientCache).filter((val) => !val.address) + const invitableRecipients = Object.values(recipientCache) + .filter((val) => !val.address) + .sort(({ displayName: a }, { displayName: b }) => (b > a ? -1 : 1)) const queryRecipients = (recipients: Recipient[]) => filterRecipients(recipients, this.state.searchQuery) From 45674fc1e740292b3f076a86e17173148ed06619 Mon Sep 17 00:00:00 2001 From: Nam Chu Hoai Date: Wed, 27 Nov 2019 08:43:21 -0800 Subject: [PATCH 08/13] Check that we have provisioned phone numbers (#1927) --- packages/attestation-service/src/sms/nexmo.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/attestation-service/src/sms/nexmo.ts b/packages/attestation-service/src/sms/nexmo.ts index cb126881c1e..7fcd2fa14e1 100644 --- a/packages/attestation-service/src/sms/nexmo.ts +++ b/packages/attestation-service/src/sms/nexmo.ts @@ -34,6 +34,12 @@ export class NexmoSmsProvider extends SmsProvider { initialize = async () => { const availableNumbers = await this.getAvailableNumbers() + + if (!availableNumbers) { + throw new Error( + 'You have no phone numbers in your Nexmo account. Please buy at least one number at https://dashboard.nexmo.com/buy-numbers' + ) + } this.nexmoNumbers = availableNumbers.map((number: any) => ({ phoneNumber: number.msisdn, code: phoneUtil.getRegionCodeForNumber(phoneUtil.parse('+' + number.msisdn)), From 5eb80d27ec455d1dbaf27a6f7598b3e0733401cc Mon Sep 17 00:00:00 2001 From: "Victor \"Nate\" Graf" Date: Wed, 27 Nov 2019 11:18:25 -0600 Subject: [PATCH 09/13] Minor edits to full-node and other docs (#1917) --- .../command-line-interface/introduction.md | 28 +++++++++++---- packages/docs/getting-started/faucet.md | 12 +++++-- .../getting-started/running-a-full-node.md | 36 +++++++++---------- .../getting-started/running-a-validator.md | 2 +- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/packages/docs/command-line-interface/introduction.md b/packages/docs/command-line-interface/introduction.md index e28f7fa398b..283e02281e7 100644 --- a/packages/docs/command-line-interface/introduction.md +++ b/packages/docs/command-line-interface/introduction.md @@ -12,7 +12,9 @@ description: >- The Celo CLI is published as a node module on NPM. Assuming you have [npm installed](https://www.npmjs.com/get-npm), you can install the Celo CLI using the following command: -`$ npm install -g @celo/celocli` +```bash +npm install -g @celo/celocli +``` {% hint style="info" %} We are currently deploying the CLI with only Node v10.x LTS support. If you are running a different version of Node, consider using [NVM](https://github.com/nvm-sh/nvm#installation-and-update) to manage your node versions. e.g. with: `nvm install 10 && nvm use 10` @@ -22,23 +24,33 @@ We are currently deploying the CLI with only Node v10.x LTS support. If you are Additionally, if don't have NPM or are having trouble installing the Celo CLI with your version of node, you can use a docker image that runs the Celo Blockchain client in full sync mode which includes the Celo CLI. -`$ docker pull us.gcr.io/celo-testnet/celocli:master` +```bash +docker pull us.gcr.io/celo-testnet/celocli:master +``` For more details on configuring this container, see the [Running a Full Node](../getting-started/running-a-full-node.md) section. You can run the container with the following command. -`$ docker run --name celo_cli_container -it -p 8545:8545 us.gcr.io/celo-testnet/celocli:master -v` +```bash +docker run --name celo_cli_container -it -p 8545:8545 us.gcr.io/celo-testnet/celocli:master -v +``` With additional arguments to the image, it can also be run in ultralight sync mode. -`$ docker run --name celo_cli_container -p 8545:8545 --entrypoint=/celo/start_geth.sh us.gcr.io/celo-testnet/celocli:master "/usr/local/bin/geth" "alfajores" "ultralight"` +```bash +docker run --name celo_cli_container -p 8545:8545 --entrypoint=/celo/start_geth.sh us.gcr.io/celo-testnet/celocli:master "/usr/local/bin/geth" "alfajores" "ultralight" +``` An interactive shell where the Celo CLI is available can be obtained via the following command. All of the subsequent documentation should be appropriate from this shell. -`$ docker exec -it celo_cli_container /bin/sh` +```bash +docker exec -it celo_cli_container /bin/sh +``` Make sure to kill the container when you are done. -`$ docker kill celo_cli_container` +```bash +docker kill celo_cli_container +``` ### **Prerequisites** @@ -48,7 +60,9 @@ Make sure to kill the container when you are done. The tool is broken down into modules and commands with the following pattern: -`celocli : <...args> <...flags?>` +```bash +celocli : <...args> <...flags?> +``` The `celocli` tool assumes that users are running a node which they have access to signing transactions on. The config module is included below for convenience. Use the sidebar to navigate to the other modules. diff --git a/packages/docs/getting-started/faucet.md b/packages/docs/getting-started/faucet.md index 880870ec0bf..85cdfabd72d 100644 --- a/packages/docs/getting-started/faucet.md +++ b/packages/docs/getting-started/faucet.md @@ -30,11 +30,15 @@ You can also use the Celo Blockchain client to create and manage account keypair Create and cd into the directory where you want to store the keypair. You can name this whatever you’d like, but here’s a default you can use: -`$ mkdir celo-data-dir $ cd celo-data-dir` +```bash +mkdir celo-data-dir $ cd celo-data-dir +``` Create an account by running this command: -`` $ docker run -v `pwd`:/root/.celo -it us.gcr.io/celo-testnet/celo-node:alfajores account new `` +```bash +docker run -v `pwd`:/root/.celo -it us.gcr.io/celo-testnet/celo-node:alfajores account new +``` It will prompt you for a passphrase, ask you to confirm it, and then will output your account address: @@ -42,7 +46,9 @@ It will prompt you for a passphrase, ask you to confirm it, and then will output This creates a keypair and stores it. Save this address to an environment variable, so that you can reference it later: -`$ export CELO_ACCOUNT_ADDRESS=` +```bash +export CELO_ACCOUNT_ADDRESS= +``` ## **Add funds to an existing account with the Faucet** diff --git a/packages/docs/getting-started/running-a-full-node.md b/packages/docs/getting-started/running-a-full-node.md index 59a6be6a094..f4ae1d3a9ab 100644 --- a/packages/docs/getting-started/running-a-full-node.md +++ b/packages/docs/getting-started/running-a-full-node.md @@ -1,13 +1,13 @@ # Running a Full Node - [Running a Full Node](#running-a-full-node) - - [Prerequisites](#prerequisites) - - [Celo Networks](#celo-networks) - - [Pull the Celo Docker image](#pull-the-celo-docker-image) - - [Set up a data directory](#set-up-a-data-directory) - - [Create an account and get its address](#create-an-account-and-get-its-address) - - [Configure the node](#configure-the-node) - - [Start the node](#start-the-node) + - [Prerequisites](#prerequisites) + - [Celo Networks](#celo-networks) + - [Pull the Celo Docker image](#pull-the-celo-docker-image) + - [Set up a data directory](#set-up-a-data-directory) + - [Create an account and get its address](#create-an-account-and-get-its-address) + - [Configure the node](#configure-the-node) + - [Start the node](#start-the-node) This section explains how to get a full node running on the [Baklava Beta Network](baklava-testnet.md) and Baklava Beta Network, using a Docker image that was built for this purpose. @@ -15,7 +15,7 @@ Full nodes play a special purpose in the Celo ecosystem, acting as a bridge betw For this reason, despite the fact that Celo uses a proof-of-stake protocol, users can earn cryptocurrency without first having to own any, simply by running a full node. -## **Prerequisites** +## Prerequisites - **You have Docker installed.** If you don’t have it already, follow the instructions here: [Get Started with Docker](https://www.docker.com/get-started). It will involve creating or signing in with a Docker account, downloading a desktop app, and then launching the app to be able to use the Docker CLI. If you are running on a Linux server, follow the instructions for your distro [here](https://docs.docker.com/install/#server). You may be required to run Docker with sudo depending on your installation environment. @@ -26,7 +26,7 @@ The code you'll see on this page is bash commands and their output. When you see text in angle brackets <>, replace them and the text inside with your own value of what it refers to. Don't include the <> in the command. {% endhint %} -## **Celo Networks** +## Celo Networks First we are going to setup the environment variables required for `Baklava` network. Run: @@ -35,19 +35,17 @@ export CELO_IMAGE=us.gcr.io/celo-testnet/celo-node:baklava export NETWORK_ID=1101 ``` -## **Pull the Celo Docker image** +## Pull the Celo Docker image We're going to use a Docker image containing the Celo node software in this tutorial. If you are re-running these instructions, the Celo Docker image may have been updated, and it's important to get the latest version. -Run: - ```bash docker pull $CELO_IMAGE ``` -## **Set up a data directory** +## Set up a data directory First, create the directory that will store your node's configuration and its copy of the blockchain. This directory can be named anything you'd like, but here's a default you can use. The commands below create a directory and then navigate into it. The rest of the steps assume you are running the commands from inside this directory. @@ -56,9 +54,9 @@ mkdir celo-data-dir cd celo-data-dir ``` -## **Create an account and get its address** +## Create an account and get its address -In this step, you'll create an account on the network. If you've already done this and have an account address, you can skip this and move on to step 3. +In this step, you'll create an account on the network. If you've already done this and have an account address, you can skip this and move on to configuring your node. Run the command to create a new account: @@ -76,7 +74,7 @@ export CELO_ACCOUNT_ADDRESS= _Note: this environment variable will only persist while you have this terminal window open. If you want this environment variable to be available in the future, you can add it to your `~/.bash_profile_ -## **Configure the node** +## Configure the node The genesis block is the first block in the chain, and is specific to each network. This command gets the `genesis.json` file for baklava and uses it to initialize your nodes' data directory. @@ -90,7 +88,7 @@ In order to allow the node to sync with the network, give it the address of exis docker run -v $PWD:/root/.celo --entrypoint cp $CELO_IMAGE /celo/static-nodes.json /root/.celo/ ``` -## **Start the node** +## Start the node This command specifies the settings needed to run the node, and gets it started. @@ -114,4 +112,6 @@ You will have fully synced with the network once you have pulled the latest bloc **Security**: The command line above includes the parameter `--rpcaddr 0.0.0.0` which makes the Celo Blockchain software listen for incoming RPC requests on all network adaptors. Exercise extreme caution in doing this when running outside Docker, as it means that any unlocked accounts and their funds may be accessed from other machines on the Internet. In the context of running a Docker container on your local machine, this together with the `docker -p` flags allows you to make RPC calls from outside the container, i.e from your local host, but not from outside your machine. Read more about [Docker Networking](https://docs.docker.com/network/network-tutorial-standalone/#use-user-defined-bridge-networks) here. {% endhint %} -Light clients may connect to you as people run the [Celo Mobile Wallet](using-the-mobile-wallet.md) and you will start earning transaction fees for any transactions that these users initiate. The account that this node advertises for light clients to use for these fees is given by the `etherbase` parameter. The `lightserv` parameter defines the percentage of time this node should spend serving light clients. Valid values are 0-100. If this node is having trouble catching up to the current block, dropping this to a lower percentage may help. The `lightpeers` and `maxpeers` parameters set limits on the number of light clients and full node peers that the node will accept. +## Light Client Serving + +Light clients may connect to you as people run the [Celo Mobile Wallet](using-the-mobile-wallet.md) and you will start earning gateway fees for any transactions that these users initiate, which you can read more about in the [Full Node Incentives](../celo-codebase/protocol/transactions/full-node-incentives.md) document. The account that this node advertises for light clients to use for these fees is given by the `etherbase` parameter. The `lightserv` parameter defines the percentage of time this node should spend serving light clients. Valid values are 0-100. If this node is having trouble catching up to the current block, dropping this to a lower percentage may help. The `lightpeers` and `maxpeers` parameters set limits on the number of light clients and full node peers that the node will accept. diff --git a/packages/docs/getting-started/running-a-validator.md b/packages/docs/getting-started/running-a-validator.md index 0ddeb8efcae..16a9f4e784e 100644 --- a/packages/docs/getting-started/running-a-validator.md +++ b/packages/docs/getting-started/running-a-validator.md @@ -466,7 +466,7 @@ You can see all the options using the following command: ./run-docker-validator-network.sh help ``` -### Stop Validating +## Stop Validating If for some reason you need to stop running your Validator, please do one or all of the following so that it will no longer be chosen as a participant in BFT: From 40edc7052229e924d54b495ef400073edf4c69f7 Mon Sep 17 00:00:00 2001 From: jfoutts-celo <57463555+jfoutts-celo@users.noreply.github.com> Date: Wed, 27 Nov 2019 09:40:14 -0800 Subject: [PATCH 10/13] cli: Fixes for #1880 and #1874 (#1918) * Fixes for #1880 and #1874 * contractkit: Fetch validator name in getValidator() * docs: Add validator:list --no-truncate option --- packages/cli/src/commands/election/current.ts | 2 +- packages/cli/src/commands/validator/list.ts | 27 ++++++++++++------- .../contractkit/src/wrappers/Validators.ts | 4 +++ .../docs/command-line-interface/validator.md | 3 +++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/commands/election/current.ts b/packages/cli/src/commands/election/current.ts index 5eba5fe88d0..9586d512cf2 100644 --- a/packages/cli/src/commands/election/current.ts +++ b/packages/cli/src/commands/election/current.ts @@ -24,7 +24,7 @@ export default class ElectionCurrent extends BaseCommand { address: {}, name: {}, affiliation: {}, - score: {}, + score: { get: (v) => v.score.toFixed() }, ecdsaPublicKey: {}, blsPublicKey: {}, }) diff --git a/packages/cli/src/commands/validator/list.ts b/packages/cli/src/commands/validator/list.ts index fd3530fb1c3..3eb64d40010 100644 --- a/packages/cli/src/commands/validator/list.ts +++ b/packages/cli/src/commands/validator/list.ts @@ -1,3 +1,4 @@ +import { flags } from '@oclif/command' import { cli } from 'cli-ux' import { BaseCommand } from '../../base' @@ -7,25 +8,33 @@ export default class ValidatorList extends BaseCommand { static flags = { ...BaseCommand.flags, + 'no-truncate': flags.boolean({ + description: "Don't truncate fields to fit line", + required: false, + }), } static examples = ['list'] async run() { - this.parse(ValidatorList) + const res = this.parse(ValidatorList) cli.action.start('Fetching Validators') const validators = await this.kit.contracts.getValidators() const validatorList = await validators.getRegisteredValidators() cli.action.stop() - cli.table(validatorList, { - address: {}, - name: {}, - affiliation: {}, - score: { get: (v) => v.score.toFixed() }, - ecdsaPublicKey: {}, - blsPublicKey: {}, - }) + cli.table( + validatorList, + { + address: {}, + name: {}, + affiliation: {}, + score: { get: (v) => v.score.toFixed() }, + ecdsaPublicKey: {}, + blsPublicKey: {}, + }, + { 'no-truncate': res.flags['no-truncate'] } + ) } } diff --git a/packages/contractkit/src/wrappers/Validators.ts b/packages/contractkit/src/wrappers/Validators.ts index 9d9a6032049..2a3bca0a40b 100644 --- a/packages/contractkit/src/wrappers/Validators.ts +++ b/packages/contractkit/src/wrappers/Validators.ts @@ -18,6 +18,7 @@ import { } from './BaseWrapper' export interface Validator { + name: string address: Address ecdsaPublicKey: string blsPublicKey: string @@ -190,7 +191,10 @@ export class ValidatorsWrapper extends BaseWrapper { /** Get Validator information */ async getValidator(address: Address): Promise { const res = await this.contract.methods.getValidator(address).call() + const accounts = await this.kit.contracts.getAccounts() + const name = (await accounts.getName(address)) || '' return { + name, address, // @ts-ignore Incorrect type for bytes ecdsaPublicKey: res.ecdsaPublicKey, diff --git a/packages/docs/command-line-interface/validator.md b/packages/docs/command-line-interface/validator.md index fc7e1f015c2..9efb675cdc6 100644 --- a/packages/docs/command-line-interface/validator.md +++ b/packages/docs/command-line-interface/validator.md @@ -66,6 +66,9 @@ List registered Validators, their name (if provided), affiliation, uptime score, USAGE $ celocli validator:list +OPTIONS + --no-truncate Don't truncate fields to fit line + EXAMPLE list ``` From b2ab149d26c00a001a16dce87fcde4052b9b2c99 Mon Sep 17 00:00:00 2001 From: lucasege Date: Wed, 27 Nov 2019 10:13:42 -0800 Subject: [PATCH 11/13] cli: Fix for #1875 (#1920) * Add set name command and set name test * Adding docs changes --- .../cli/src/commands/account/set-name.test.ts | 32 ++++++++++++++++++ packages/cli/src/commands/account/set-name.ts | 33 +++++++++++++++++++ .../docs/command-line-interface/account.md | 18 ++++++++++ 3 files changed, 83 insertions(+) create mode 100644 packages/cli/src/commands/account/set-name.test.ts create mode 100644 packages/cli/src/commands/account/set-name.ts diff --git a/packages/cli/src/commands/account/set-name.test.ts b/packages/cli/src/commands/account/set-name.test.ts new file mode 100644 index 00000000000..b7a465d9279 --- /dev/null +++ b/packages/cli/src/commands/account/set-name.test.ts @@ -0,0 +1,32 @@ +import { testWithGanache } from '@celo/dev-utils/lib/ganache-test' +import Web3 from 'web3' +import Register from '../account/register' +import SetName from './set-name' + +process.env.NO_SYNCCHECK = 'true' + +testWithGanache('account:set-name cmd', (web3: Web3) => { + test('can set the name of an account', async () => { + const accounts = await web3.eth.getAccounts() + await Register.run(['--from', accounts[0]]) + await SetName.run(['--account', accounts[0], '--name', 'TestName']) + }) + + test('fails if account is not registered', async () => { + const accounts = await web3.eth.getAccounts() + + await expect(SetName.run(['--account', accounts[0], '--name', 'TestName'])).rejects.toThrow( + "Some checks didn't pass!" + ) + }) + + test('fails if account is not provided', async () => { + await expect(SetName.run(['--name', 'TestName'])).rejects.toThrow('Missing required flag') + }) + + test('fails if name is not provided', async () => { + const accounts = await web3.eth.getAccounts() + + await expect(SetName.run(['--account', accounts[0]])).rejects.toThrow('Missing required flag') + }) +}) diff --git a/packages/cli/src/commands/account/set-name.ts b/packages/cli/src/commands/account/set-name.ts new file mode 100644 index 00000000000..2624af60c14 --- /dev/null +++ b/packages/cli/src/commands/account/set-name.ts @@ -0,0 +1,33 @@ +import { flags } from '@oclif/command' +import { BaseCommand } from '../../base' +import { newCheckBuilder } from '../../utils/checks' +import { displaySendTx } from '../../utils/cli' +import { Flags } from '../../utils/command' + +export default class SetName extends BaseCommand { + static description = + "Sets the name of a registered account on-chain. An account's name is an optional human readable identifier" + + static flags = { + ...BaseCommand.flags, + account: Flags.address({ required: true }), + name: flags.string({ required: true }), + } + + static args = [] + + static examples = [ + 'register --account 0x5409ed021d9299bf6814279a6a1411a7e866a631 --name test-account', + ] + + async run() { + const res = this.parse(SetName) + this.kit.defaultAccount = res.flags.account + const accounts = await this.kit.contracts.getAccounts() + + await newCheckBuilder(this) + .isAccount(res.flags.account) + .runChecks() + await displaySendTx('setName', accounts.setName(res.flags.name)) + } +} diff --git a/packages/docs/command-line-interface/account.md b/packages/docs/command-line-interface/account.md index 5227499d308..a27430a3efd 100644 --- a/packages/docs/command-line-interface/account.md +++ b/packages/docs/command-line-interface/account.md @@ -272,6 +272,24 @@ EXAMPLE _See code: [packages/cli/src/commands/account/register-metadata.ts](https://github.com/celo-org/celo-monorepo/tree/master/packages/cli/src/commands/account/register-metadata.ts)_ +### Set-name + +Sets the name of a registered account on-chain. An account's name is an optional human readable identifier + +``` +USAGE + $ celocli account:set-name + +OPTIONS + --account=0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d (required) Account Address + --name=name (required) + +EXAMPLE + register --account 0x5409ed021d9299bf6814279a6a1411a7e866a631 --name test-account +``` + +_See code: [packages/cli/src/commands/account/set-name.ts](https://github.com/celo-org/celo-monorepo/tree/master/packages/cli/src/commands/account/set-name.ts)_ + ### Show-metadata Show the data in a local metadata file From a205604a901d250e6c767702079ff1007e2da0fc Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 27 Nov 2019 12:37:46 -0600 Subject: [PATCH 12/13] Build Page for Baklava Launch Part 1 (#1866) * new stack area before too much crazy * Freeze the illustration as we scroll past it * Mobile and tablet sizes working * fix hash link scroll to correct offset * Add leaderboard * Add browse code button to full stack area and update title of features area * Order those imports * Add connection footer to build page * More copying of files from other branch over * Add alignment options to social channels * JK * Add back translations * add Transcieve graphic * mathemagic * Reduce lines and cleanup code * Wait 2 seconds before running animation * The great celo stake off * That sweet baking * Set max height for graphic * Three mode stickiness * Engagement area of build page with mobile support * Fix Buttons on Firebox being wrong sized * Add space between buttons * When scrolling up our little illogical re attaches to the flow * This works. Maybe I can make better * Highlight ALL layers when code * Little fixes * Build updates * Updates to engage * Merging Diminator leaderboard into aaronmgdr /build (#1860) * - make page / baklava - leaderboard app with graphql fetch * fix lint * port leaderboard app to dev page * remove unused packages * expand leaderboard and env vars * Let the games begin * Lint fix * Leaderboard app with query (#1864) * cherry pick leaderboard app * web site changes * it was changed now * cleanup * fix duplicate import * Fuck yeah * Some improvements * lockfile changes * Add terms link * Always be linting * Fix lint errors * Lint * Show leaderboard and handle empty array * Fix env config * Prettify template --- packages/celotool/README.md | 2 +- packages/celotool/src/lib/generate_utils.ts | 1 + .../src/test-utils/PromiEventStub.ts | 2 + packages/mobile/package.json | 2 +- packages/verifier/package.json | 2 +- packages/web/env-config.js.enc | Bin 1736 -> 2092 bytes packages/web/env-config.js.template | 4 + packages/web/package.json | 2 + packages/web/pages/_app.tsx | 18 +- packages/web/src/dev/BuildPage.tsx | 67 +- packages/web/src/dev/Cover.tsx | 190 +- packages/web/src/dev/Engage.tsx | 252 + packages/web/src/dev/Feast.png | Bin 0 -> 111197 bytes packages/web/src/dev/Features.tsx | 134 +- packages/web/src/dev/FullStack.tsx | 404 +- packages/web/src/dev/LayersIllo.tsx | 19 +- packages/web/src/dev/LeaderBoard.tsx | 139 + packages/web/src/dev/LeaderBoardApp.tsx | 59 + packages/web/src/dev/LeaderBoardError.tsx | 38 + packages/web/src/dev/LeaderBoardLoading.tsx | 24 + packages/web/src/dev/Racer.tsx | 92 + packages/web/src/dev/StackSection.tsx | 124 +- packages/web/src/dev/Transceive.tsx | 125 + packages/web/src/dev/bakeoff.png | Bin 0 -> 7723 bytes packages/web/src/dev/cakeLayering.jpg | Bin 0 -> 25460 bytes packages/web/src/dev/cakeProtector.png | Bin 0 -> 4043 bytes packages/web/src/dev/chefs.png | Bin 0 -> 53695 bytes packages/web/src/icons/blog-dark.png | Bin 0 -> 2209 bytes packages/web/src/icons/documentation-dark.png | Bin 0 -> 2108 bytes packages/web/src/icons/download-dark.png | Bin 0 -> 1288 bytes packages/web/src/icons/faucet-dark.png | Bin 0 -> 1709 bytes packages/web/src/layout/BookLayout.tsx | 51 + packages/web/src/react-native-aug.d.ts | 1 + packages/web/src/shared/Button.3.tsx | 2 +- packages/web/src/shared/ConnectionFooter.tsx | 82 + packages/web/src/shared/SocialChannels.tsx | 66 +- packages/web/src/shared/menu-items.ts | 1 + packages/web/static/locales/en/community.json | 7 +- packages/web/static/locales/en/dev.json | 85 +- yarn.lock | 4696 +++++++++++++++-- 40 files changed, 5806 insertions(+), 885 deletions(-) create mode 100644 packages/web/src/dev/Engage.tsx create mode 100644 packages/web/src/dev/Feast.png create mode 100644 packages/web/src/dev/LeaderBoard.tsx create mode 100644 packages/web/src/dev/LeaderBoardApp.tsx create mode 100644 packages/web/src/dev/LeaderBoardError.tsx create mode 100644 packages/web/src/dev/LeaderBoardLoading.tsx create mode 100644 packages/web/src/dev/Racer.tsx create mode 100644 packages/web/src/dev/Transceive.tsx create mode 100644 packages/web/src/dev/bakeoff.png create mode 100644 packages/web/src/dev/cakeLayering.jpg create mode 100644 packages/web/src/dev/cakeProtector.png create mode 100644 packages/web/src/dev/chefs.png create mode 100644 packages/web/src/icons/blog-dark.png create mode 100644 packages/web/src/icons/documentation-dark.png create mode 100644 packages/web/src/icons/download-dark.png create mode 100644 packages/web/src/icons/faucet-dark.png create mode 100644 packages/web/src/layout/BookLayout.tsx create mode 100644 packages/web/src/shared/ConnectionFooter.tsx diff --git a/packages/celotool/README.md b/packages/celotool/README.md index 6a1ec15debf..e57021e5358 100644 --- a/packages/celotool/README.md +++ b/packages/celotool/README.md @@ -95,4 +95,4 @@ a few useful commands to make running a node really easy. #### MacOS Setup - Install Helm 2.14.0 from https://get.helm.sh/ (Homebrew lacks this version.) -To get past the Unidentified Developer error: open the directory containing helm, then ctrl-click helm and select Open then Open again. Repeat for tiller. + To get past the Unidentified Developer error: open the directory containing helm, then ctrl-click helm and select Open then Open again. Repeat for tiller. diff --git a/packages/celotool/src/lib/generate_utils.ts b/packages/celotool/src/lib/generate_utils.ts index 2633757b842..a8a8965beec 100644 --- a/packages/celotool/src/lib/generate_utils.ts +++ b/packages/celotool/src/lib/generate_utils.ts @@ -191,6 +191,7 @@ const generateIstanbulExtraData = (validators: Validator[]) => { '0x' + repeat('0', istanbulVanity * 2) + rlp + // @ts-ignore .encode([ // Added validators validators.map((validator) => Buffer.from(validator.address, 'hex')), diff --git a/packages/contractkit/src/test-utils/PromiEventStub.ts b/packages/contractkit/src/test-utils/PromiEventStub.ts index c1dd41c5ad0..ba1ff669fe2 100644 --- a/packages/contractkit/src/test-utils/PromiEventStub.ts +++ b/packages/contractkit/src/test-utils/PromiEventStub.ts @@ -12,6 +12,8 @@ interface PromiEventStub extends PromiEvent { export function promiEventSpy(): PromiEventStub { const ee = new EventEmitter() const pe: PromiEventStub = { + // Not sure why this is failing right now + // @ts-ignore finally: () => { throw new Error('not implemented') }, diff --git a/packages/mobile/package.json b/packages/mobile/package.json index ef30ddb2c93..495f1677abb 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -78,7 +78,7 @@ "node-libs-react-native": "^1.0.3", "numeral": "^2.0.6", "react": "16.9.0", - "react-apollo": "^2.4.1", + "react-apollo": "^2.5.8", "react-async-hook": "^3.4.0", "react-i18next": "^8.3.8", "react-native": "^0.61.2", diff --git a/packages/verifier/package.json b/packages/verifier/package.json index cbcc8d75062..ce6e9105322 100644 --- a/packages/verifier/package.json +++ b/packages/verifier/package.json @@ -40,7 +40,7 @@ "graphql": "^14.1.1", "i18next": "^12.1.0", "react": "16.9.0", - "react-apollo": "^2.4.1", + "react-apollo": "^2.5.8", "react-i18next": "^8.3.8", "react-native": "^0.61.2", "react-native-config": "https://github.com/luggit/react-native-config#89a602b", diff --git a/packages/web/env-config.js.enc b/packages/web/env-config.js.enc index fb0730a71f516bdf81321b3dcacd5e47c8f71d92..406a37a9024907d8d22c28ff21d4c201877b8355 100644 GIT binary patch literal 2092 zcmV+{2-EipBmi5&XOc#WS;Lq>x2(9xk)3Kd6#fS3*aeD+%mn5NQx&5<5E6qB02zV- zF3=0MA<%YwSzYehI-kx)w*7iaahJk)B z>y8#wfZopC5sBfiu6_6DDn|^}AmG)|hkT`*U>*+!Wvl3s!})Hg37CDU$dsgsrbHQ= zSFmqNk9nwYskU0t$K7ehPF*u|>lE+5&nrX8rTD8k=f%te+D1n0g-vW%=8g?m7T2UV zFyG;eJO<`eCW`yS!wEmM7~5j-5Emtqp~4Znty~)RR*u^-$C}W&Qrx%IL`IN|2VR<` z2B8%>|_Z=$5R|;=8>A@+u zEj_G6!0}btQVv@Fnyqv0^qsGtOY-H*cCzm$XrUC*%puDu9m{>E%^TVw9E|8rd$;97 zhr*ua^hxILv6Y;Dd%UPl_V4Z{Y6HL8Z?U>1@nDEkW%QQ@Ym=ib=HMZOLY=^C#Buf+ zP0(Aat1PjTw1*?|U9s)2+jc*_f@3ca=ySS;1fGk4!>3NA?tKU=b@b>|pv!kiS18gl zN+D!z=WnO(ajBO}iYUS|Nz#U?Sx4K7(Y0MoMu$ur109(!L5NA7?k-GA@Vb3|q`skq zF^D&wP7{o+<|{U>MxgD!#Y{S=)!S6llGpsHtE$w&iFT9oykd=ngB-xT_h;&5gfBd8 zYV-E$j?=Ly^J30NVYF%uRT9{b0;Wx4mzZSqW#lO&ix=swHK1{{qZehw@xd$+doq|= z$1v6pu#QzWhP0Q9dZ@&)h`Qybg|R_^IZ5lWcJ%G%VZ92C;Fm{-n(*H3xa4Bo$Y+*v0O}SY~JV{6E}mSm@@W3qcBn=Nm|DH zWKC19Hb?GoT$`wPM6M1jV*V6SmgpSB9f)rJz1hzo5JsHLdrch#nU{r2so?B00DXk{ zzgG+AE{>EqoFtLHc3s1ueM^h@AJ;`~@->ergl`_+hc64I#HBuMz3+}E+wO4(qe>U0 zZ%2@nX3My!Bo_AzI7V##QmI8F4fDCd%{%BI@jf5jdx z({v6Jm}uVx!llHuKZD6(50(R0`g|=N`=-wUfDrmHLUPnx6UTJ&KnSc{je}cQ85h*? z3!rMy<+bWyu1n3ex;5^F$g_4V8eAmGWFNoLyh2JCE4vD_ZnZy`*ctX?Gxt##q|$uK zf4<`|9aqBjgnQ2E?sG0#AWqBgkFX*vUr&TC#a7y!<|}aK&T?=OV;08G0Q~9iw!w;z zt0yK3kP^L=s-FyL)BZXrX8Bou#DA$@)@;*N+{)n6MxnksTwxxYnFu{2f@=r<+ZJrt zu0TGd#W4qEpCCxbV`|yOBPygjAO1<|X*(k4DM)NPD^AnLu<}|R*BtB=U>DwkpoDuW z0h&8zeK>*6iV)VRHrx}Y6;0f-H2O>LkB#F9BMM|J8(r0MBD$A$ z3v7GDAEC^H!}?(uewdS} zZUP0&Y?oIP4C^U$HK?^-O|S@o?|we8jA$I~9P_=^VNt*(d7!AinJ4XFQLKp(n|}s1 z8y-%Im7%g*WF&ML@SN#QMjkStyu_qkrWKxe9Z8?(Ed-|-prGusX)7fFT~Dgw#uOCK z#O>*F+8|qcmgoiIB*Hpy->xlTm(*fIwLzEpyIOJTiq)*bgn}n&p?Gm*DA~dt{L(L4 z&b{!`EGfe03$zZmK{l5ls`}YIkGaxhR9O!^_rdM0B*q}X zx>RK*-Ib6Z5Fogn$)8=jx@xqhcoh5LkehIebu?qLBSe;%|In|G@fRr?uf}lj^$TqnW5uqz z3i?a%=b6U^s;L~!*=C3{DeBvK?X{$l+#3gG>AG5HM4J1RO9~b-aTM(jY$5#O$8o=+ zk-_P<$9j;Uu?FF|dWHL%;n)h%kjh{Ndt`KTatN72sKmL>kTRa3`tN%DF8he!amL zbT@2**ZEOzspTxs-|K(m2zo6Xo-}$5Fi9Vbr7*{(x~aF#i877$?TubAR^%Vu}SLFgi(oKvJ$|>L7}dwPqk6+6GKm8#8NAUd?ll#~h^SMP4JPaSZjNF4 W2aC;<{2+KBtS*)`8I!^42H{cDUM}VU literal 1736 zcmV;(1~>T%Bmi5&XOd7jh8iHsT>+iL!%{>9;k=tnljQH>(<%}W%TD=DQ4*gG02zV- zE)-{K8BL|z__TVrG~=Ce-1AF-(&wX#J6r zd<7D~`7_oXY$QN1+p@Y?xMxjLfmwmVRZKobx%=wY4yx{HZ#9a?==ar(yzTk{ZS_7X z`o&%YWzz}~9)a!?J`H%(+9c_#Pf8&fD7YNHkg9~y`h*@XCKlmPB{m)2*=2;zYtbL$ zq{sB{z?r=Yz$O>DK6lZBxZONxP&E<;7JwGDpMn>&L3&7uyc9xr-dUaCa(lJuCfc*z z4fx29^svK&Ova$fJLxCay&W#%QFh}8tCLib(r7OR!4~!;tFDTyOBFsPeF$*!HdJ}v zh!>+q8QV&&s2p+Sj_ALeirerSL<}B)T)F(eSs2SEFEqXHy!EQJ;zQgv^>yy!s=X9 zIiIGcn?{FHK|NVfSSVos)SIVm3#T%2S`wGT;hHgAKX+Dtkhm82H>QJAt#F=qv%unU z{;Z0OvY;QsPH$tmli58od5u}Mju_t>5L0#diwWU_fk<#m;tZ(fmbdAlOP}8wJIF$V zH2?2Pw#O+A6M@bWXDSd8Np9LUxUW-N__6vwhTbD#5oJFW!X1OTXE6S(lkrha76d@v zTVQv)Qn&FdgR!ar`rIYk5$4(3)Hpl8+EbdJF4+e{q9NSn?~%bu#c(O1DU5^Wb zOt(%|^X0y(g>dtI%=i~Om9;}&PB;!ym~BXfRl+wt!otN5pCKn33LDbBpjQtB;38v} zG6nZqFjtCGM_$6KEv%OGYgJj0o{KO8LeJJtgDi@kskEMkK{0dJXq%%ZG^`Dkrc~p1 zmZv`&)m>kb|0leb%EknEZPh^rF(?HUH}~A?BldVKeA(iDzn6(&`wOj)sn5@3jh7qT zBm*4CmSA5Ni}PQ+Fj9=9aNid%gl~mJ4XltwdP_stXq_FyJ}f^#w#9|lbX$^AX;0-mZZ(dy|A(M2Glg7GED!DmcFdTdN92ug3foZlH6 z_Z2bpg=vjqEBH$C&MWfg2L@c<#GhCV_Z0C+D|k#A!OEg2J`*KgvzeD1EyZYHlag7j z8QhBDOs~avoZaT_um|nU2-E1h&rFM=X@`P(y?{LAXF?)g5Z8LA2_lYEv1o5ox7qR0 z-r$@{mC_KjGUqqM{BR;q!$*Qo#!fo8|Hes8uzzYP|Dc3kwtYy^K;+qB*ygpy`>1zc zlJQs9J8=zSpQvW|`t6wRJh4{#hZ)Bv?Aq)CyVKiv=Q{v~jcYL%*>T&dJYd+>T&)V{ z-uSj~yRC*vsCvjA$0^ZB8$IB2sM#Sw5P-!zV}iz}3V&L39IgG8HLg`AXc)9}SVCrB zYu#Ode*1f%62O@lVnsSNkc+9qyv1N~Mkf5B0$aQe$EI z5^)%pt_!A+H;ArGJwW0W$f#6}X9xub*Paeqv#I)b*oVW7+K_tbt|wtW1_A!*f|r1A z!+1P}5-rb=Ywc)_ii=TZ`O9H?Fe{;Lt~O!p{FZpNgeeuqsS;1tiiBd5*yJPu{&_%T zd&Hi1Db027*oNPDt>+A{-zF { - scrollTo(window.location.hash.slice(1), 'start') - }, 200) + hashScroller(window.location.hash) } + window.addEventListener('hashchange', () => hashScroller(window.location.hash)) + if (getConfig().publicRuntimeConfig.FLAGS.ENV === 'development') { checkH1Count() } } - // there are a few pages we dont want the header on for artist reasons + // there are a few pages we dont want the header on for artistic reasons // currently this is just the animation demo pages skipHeader() { return this.props.router.asPath.startsWith('/animation') @@ -72,3 +72,9 @@ function checkH1Count() { } }, 500) } + +function hashScroller(id: string) { + const element = document.getElementById(id.replace('#', '')) + + scrollIntoView(element, { time: 200, align: { top: 0.2, topOffset: HEADER_HEIGHT } }) +} diff --git a/packages/web/src/dev/BuildPage.tsx b/packages/web/src/dev/BuildPage.tsx index f9cc264f743..57a3a529dec 100644 --- a/packages/web/src/dev/BuildPage.tsx +++ b/packages/web/src/dev/BuildPage.tsx @@ -1,16 +1,13 @@ import * as React from 'react' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import Cover from 'src/dev/Cover' -import DeveloperUpdates from 'src/dev/DeveloperUpdates' +import Engage from 'src/dev/Engage' import Features from 'src/dev/Features' -import StackExplorer from 'src/dev/FullStack' -import StackSection from 'src/dev/StackSection' -import Title from 'src/dev/Title' -import { Li } from 'src/fonts/Fonts' +import FullStack from 'src/dev/FullStack' import OpenGraph from 'src/header/OpenGraph' import { I18nProps, withNamespaces } from 'src/i18n' -import menuItems, { CeloLinks, hashNav } from 'src/shared/menu-items' -import { standardStyles, textStyles } from 'src/styles' +import ConnectionFooter from 'src/shared/ConnectionFooter' +import menuItems from 'src/shared/menu-items' class BuildPage extends React.PureComponent { static getInitialProps() { @@ -18,9 +15,8 @@ class BuildPage extends React.PureComponent { } render() { - const { t } = this.props return ( - + { } /> - - - - - <StackSection - label="1" - id={hashNav.build.applications} - title={t('mobile.title')} - text={t('mobile.text')} - buttonOne={{ title: t('installWallet'), href: CeloLinks.walletApp }} - buttonTwo={{ title: t('seeCode'), href: CeloLinks.monorepo }} - > - <Li style={textStyles.readingOnDark}>{t('mobile.nonCustodial')}</Li> - <Li style={textStyles.readingOnDark}>{t('mobile.mobileUltra')}</Li> - <Li style={textStyles.readingOnDark}>{t('mobile.exchange')}</Li> - <Li style={textStyles.readingOnDark}>{t('mobile.qr')}</Li> - </StackSection> - <StackSection - label="2" - id={hashNav.build.contracts} - title={t('protocol.title')} - text={t('protocol.text')} - buttonOne={{ title: t('readMore'), href: CeloLinks.docsOverview }} - buttonTwo={{ title: t('seeCode'), href: CeloLinks.monorepo }} - > - <Li style={textStyles.readingOnDark}>{t('protocol.algoReserve')}</Li> - <Li style={textStyles.readingOnDark}>{t('protocol.cryptoCollat')}</Li> - <Li style={textStyles.readingOnDark}>{t('protocol.native')}</Li> - </StackSection> - <StackSection - label="3" - id={hashNav.build.blockchain} - title={t('proof.title')} - text={t('proof.text')} - buttonOne={{ title: t('readMore'), href: CeloLinks.docsOverview }} - buttonTwo={{ title: t('seeCode'), href: CeloLinks.blockChainRepo }} - > - <Li style={textStyles.readingOnDark}>{t('proof.permissionless')}</Li> - <Li style={textStyles.readingOnDark}>{t('proof.rewardsWeighted')}</Li> - <Li style={textStyles.readingOnDark}>{t('proof.onChain')}</Li> - </StackSection> - </View> - <DeveloperUpdates /> + <FullStack /> + <Features /> + <Engage /> + <ConnectionFooter includeDividerLine={false} /> </View> ) } } export default withNamespaces('dev')(BuildPage) + +const styles = StyleSheet.create({ + container: { scrollPadding: 20 }, +}) diff --git a/packages/web/src/dev/Cover.tsx b/packages/web/src/dev/Cover.tsx index a403f56b9a4..b9271cb4c2d 100644 --- a/packages/web/src/dev/Cover.tsx +++ b/packages/web/src/dev/Cover.tsx @@ -1,80 +1,155 @@ import * as React from 'react' -import { StyleSheet, View } from 'react-native' +import LazyLoad from 'react-lazyload' +import { Image, StyleSheet, Text, View } from 'react-native' import Fade from 'react-reveal/Fade' -import CoverActions from 'src/dev/CoverActions' -import Phone from 'src/dev/Phone' -import { H1, H4 } from 'src/fonts/Fonts' -import { I18nProps, withNamespaces } from 'src/i18n' +import Transceive from 'src/dev/Transceive' +import { H2, H3, H4 } from 'src/fonts/Fonts' +import { I18nProps, Trans, withNamespaces } from 'src/i18n' import { Cell, GridRow, Spans } from 'src/layout/GridRow' import Button, { BTN, SIZE } from 'src/shared/Button.3' import { CeloLinks } from 'src/shared/menu-items' import { HEADER_HEIGHT } from 'src/shared/Styles' -import { colors, standardStyles, textStyles } from 'src/styles' - -const DELAY = 400 -const DELAY_2 = DELAY * 1.3 +import { colors, fonts, standardStyles, textStyles } from 'src/styles' +import LeaderBoardApp from './LeaderBoardApp' +const DELAY = 100 const DURATION = 400 +function Link({ children, href }) { + return <Button style={textStyles.invert} kind={BTN.INLINE} text={children} href={href} /> +} + const CoverComponent = React.memo(function Cover({ t }: I18nProps) { return ( <View style={styles.cover}> - <View style={styles.phone}> - <Phone /> + <View style={[styles.phone, standardStyles.centered]}> + <Transceive /> </View> <GridRow allStyle={standardStyles.centered} desktopStyle={standardStyles.sectionMarginBottom} tabletStyle={standardStyles.sectionMarginBottomTablet} > - <Cell span={Spans.three4th} style={[standardStyles.centered]}> - <H1 - style={[ - textStyles.center, - textStyles.invert, - standardStyles.blockMarginTopTablet, - standardStyles.elementalMarginBottom, - ]} - > - {t('buildCoverTitle')} - </H1> + <TitleAndSubTitle title={t('makeWithCelo')} subtitle={t('makeWithCeloSubtitle')} /> + </GridRow> + <GridRow allStyle={standardStyles.centered}> + <TitleAndSubTitle title={t('greatStakeOff')} subtitle={''}> + <Fade delay={DELAY} duration={DURATION}> + <Image + style={styles.baking} + source={require('src/dev/bakeoff.png')} + resizeMode={'contain'} + /> + </Fade> + </TitleAndSubTitle> + </GridRow> - <H4 style={[textStyles.center, textStyles.invert, standardStyles.elementalMarginBottom]}> - <Fade ssrReveal={true} delay={DELAY} duration={DURATION}> - {t('buildCoverSubtitle')} - </Fade> + <GridRow + mobileStyle={standardStyles.blockMarginBottomMobile} + tabletStyle={standardStyles.blockMarginBottomTablet} + desktopStyle={standardStyles.blockMarginBottom} + > + <Cell span={Spans.fourth}> + <H3 style={textStyles.invert}>{t('purposeTitle')}</H3> + </Cell> + <Cell span={Spans.half}> + <H4 style={[textStyles.invert, standardStyles.elementalMarginBottom, styles.purposeText]}> + <Trans i18nKey={t('purposeText')}> + Learn how to run a node on Celo’s peer-to-peer network and win up to{' '} + <Text href={CeloLinks.discourse} style={styles.colorEmphasis}> + 2 million Celo Gold in rewards. + </Text>* + </Trans> </H4> - <Fade ssrReveal={true} delay={DELAY} duration={DURATION}> - <View style={styles.buttons}> - <View style={[standardStyles.elementalMargin, styles.button]}> - <Button - text={t('getStarted')} - kind={BTN.PRIMARY} - size={SIZE.big} - href={CeloLinks.walletApp} - /> - </View> - <View style={[standardStyles.elementalMargin, styles.button]}> - <Button - text={t('exploreCLI')} - kind={BTN.NAKED} - size={SIZE.big} - align="center" - href={CeloLinks.tutorial} - /> - </View> - </View> - </Fade> + <Text style={[fonts.p, textStyles.invert]}> + <Trans i18nKey={'purposeAsterisk'}> + <Link href={CeloLinks.stakeOffTerms}>Terms and Conditions</Link> + </Trans> + </Text> + </Cell> + </GridRow> + <GridRow + mobileStyle={standardStyles.blockMarginBottomMobile} + tabletStyle={standardStyles.blockMarginBottomTablet} + desktopStyle={standardStyles.blockMarginBottom} + > + <Cell span={Spans.fourth}> + <H3 style={textStyles.invert}>{t('challengeTitle')}</H3> + </Cell> + <Cell span={Spans.half}> + <Text style={[fonts.p, textStyles.invert, standardStyles.elementalMarginBottom]}> + {t('challengeText')} + </Text> + <Button + size={SIZE} + kind={BTN.PRIMARY} + text={t('challengeBtnText')} + href="https://medium.com/celohq/announcing-the-great-celo-stake-off-12eb15dd5eb0" + /> </Cell> </GridRow> - <Fade ssrReveal={true} delay={DELAY_2} duration={DURATION} bottom={true} distance={'40px'}> - <View> - <CoverActions /> - </View> - </Fade> + <GridRow + mobileStyle={standardStyles.blockMarginBottomMobile} + tabletStyle={standardStyles.blockMarginBottomTablet} + desktopStyle={standardStyles.blockMarginBottom} + > + <Cell span={Spans.fourth}> + <H3 style={textStyles.invert}>{t('whoTitle')}</H3> + </Cell> + <Cell span={Spans.half}> + <Text style={[fonts.p, textStyles.invert]}>{t('whoText')}</Text> + </Cell> + </GridRow> + <LazyLoad> + <GridRow + desktopStyle={standardStyles.blockMarginBottom} + tabletStyle={standardStyles.blockMarginBottomTablet} + mobileStyle={standardStyles.blockMarginBottomMobile} + > + <Cell span={Spans.full}> + <LeaderBoardApp /> + </Cell> + </GridRow> + </LazyLoad> </View> ) }) +interface TitleProps { + title: string + subtitle: string + children?: React.ReactNode +} + +const TitleAndSubTitle = React.memo(function _TitleAndSubtile({ + title, + subtitle, + children, +}: TitleProps) { + return ( + <Cell span={Spans.half} style={[standardStyles.centered]}> + {children} + <H2 + style={[ + textStyles.center, + textStyles.invert, + standardStyles.blockMarginTopTablet, + standardStyles.elementalMarginBottom, + ]} + > + <Fade delay={DELAY} duration={DURATION}> + {title} + </Fade> + </H2> + + <H4 style={[textStyles.center, textStyles.invert, standardStyles.elementalMarginBottom]}> + <Fade delay={DELAY} duration={DURATION}> + {subtitle} + </Fade> + </H4> + </Cell> + ) +}) + const styles = StyleSheet.create({ buttons: { flex: 1, @@ -92,16 +167,25 @@ const styles = StyleSheet.create({ overflow: 'hidden', }, phone: { - height: '27vh', + paddingHorizontal: 20, + height: '33vh', minHeight: 250, + maxHeight: 400, marginTop: HEADER_HEIGHT, }, gap: { width: 20, }, + baking: { height: 151, width: 169 }, button: { marginHorizontal: 10, }, + colorEmphasis: { + color: colors.gold, + }, + purposeText: { + maxWidth: 385, + }, }) export default withNamespaces('dev')(CoverComponent) diff --git a/packages/web/src/dev/Engage.tsx b/packages/web/src/dev/Engage.tsx new file mode 100644 index 00000000000..afbcff69011 --- /dev/null +++ b/packages/web/src/dev/Engage.tsx @@ -0,0 +1,252 @@ +import { I18nProps } from 'next-i18next' +import * as React from 'react' +import { + Image, + ImageRequireSource, + ImageSourcePropType, + StyleSheet, + Text, + View, +} from 'react-native' +import Fade from 'react-reveal/Fade' +import { H2, H3, H4 } from 'src/fonts/Fonts' +import { NameSpaces, withNamespaces } from 'src/i18n' +import { Cell, GridRow, Spans } from 'src/layout/GridRow' +import { ScreenProps, ScreenSizes, withScreenSize } from 'src/layout/ScreenSize' +import AspectRatio from 'src/shared/AspectRatio' +import Button, { BTN, SIZE } from 'src/shared/Button.3' +import { CeloLinks } from 'src/shared/menu-items' +import { fonts, standardStyles } from 'src/styles' + +const Engage = React.memo(function _Engage({ t, screen }: I18nProps & ScreenProps) { + return ( + <> + <GridRow + desktopStyle={standardStyles.sectionMarginTop} + tabletStyle={standardStyles.sectionMarginTopTablet} + mobileStyle={standardStyles.sectionMarginTopMobile} + allStyle={styles.alignOut} + > + <Cell span={Spans.half}> + <H2 style={standardStyles.elementalMarginBottom}>{t('engage.topTitle')}</H2> + <Content + image={require('src/dev/cakeLayering.jpg')} + screen={screen} + noun={t('engage.developers.noun')} + verb={t('engage.developers.verb')} + network={t('engage.developers.network')} + caption={t('engage.developers.caption')} + primaryAction={{ + text: t('engage.developers.primaryAction'), + href: CeloLinks.walletApp, + }} + /> + </Cell> + <Cell span={Spans.half} style={[styles.asides]}> + <Aside + screen={screen} + text={t('engage.faucet.copy')} + title={t('engage.faucet.title')} + href={CeloLinks.faucet} + btnText={t('engage.faucet.btnText')} + image={require('src/icons/faucet-dark.png')} + /> + <Aside + screen={screen} + text={t('engage.docs.copy')} + title={t('engage.docs.title')} + href={CeloLinks.docs} + btnText={t('engage.docs.btnText')} + image={require('src/icons/documentation-dark.png')} + /> + </Cell> + </GridRow> + <GridRow + allStyle={styles.alignOut} + desktopStyle={standardStyles.blockMarginTop} + tabletStyle={standardStyles.blockMarginTopTablet} + mobileStyle={standardStyles.blockMarginTopMobile} + > + <Cell span={Spans.half}> + <Content + image={require('src/dev/chefs.png')} + screen={screen} + noun={t('engage.validators.noun')} + verb={t('engage.validators.verb')} + network={t('engage.validators.network')} + caption={t('engage.validators.caption')} + primaryAction={{ + text: t('engage.validators.primaryAction'), + href: 'https://medium.com/celohq/announcing-the-great-celo-stake-off-12eb15dd5eb0', + }} + /> + </Cell> + <Cell span={Spans.half} style={[styles.asides]}> + <Aside + screen={screen} + text={t('engage.tutorial.copy')} + title={t('engage.tutorial.title')} + href="?todo" + btnText={t('engage.tutorial.btnText')} + image={require('src/icons/download-dark.png')} + /> + <Aside + screen={screen} + text={t('engage.blog.copy')} + title={t('engage.blog.title')} + href="https://medium.com/celohq/consensus-and-proof-of-stake-in-the-celo-protocol-3ff8eee331f6" + btnText={t('engage.blog.btnText')} + image={require('src/icons/blog-dark.png')} + /> + </Cell> + </GridRow> + <GridRow + allStyle={[standardStyles.elementalMarginBottom, styles.alignOut]} + desktopStyle={standardStyles.blockMarginTop} + tabletStyle={standardStyles.blockMarginTopTablet} + mobileStyle={standardStyles.blockMarginTopMobile} + > + <Cell span={Spans.half}> + <H3>{t('engage.contributeTitle')}</H3> + <Text style={[fonts.p, standardStyles.elementalMargin]}> + {t('engage.contributeText')} + </Text> + <Button text={t('engage.contributeBtn')} kind={BTN.PRIMARY} href={'/TODO'} /> + </Cell> + <Cell span={Spans.half} style={standardStyles.centered}> + <AspectRatio ratio={309 / 360} style={[standardStyles.image, styles.feastImage]}> + <Image + source={require('src/dev/Feast.png')} + style={styles.graphic} + resizeMode="contain" + /> + </AspectRatio> + </Cell> + </GridRow> + </> + ) +}) + +export default withNamespaces(NameSpaces.dev)(withScreenSize(Engage)) + +interface ContentProps { + noun: string + verb: string + network: string + caption: string + primaryAction: { text: string; href: string } + image: ImageRequireSource + screen: ScreenSizes +} + +const Content = React.memo(function _Content(props: ContentProps) { + return ( + <View style={styles.paragraphArea}> + <H3 style={standardStyles.elementalMarginBottom}>{props.noun}</H3> + <H4 style={standardStyles.elementalMarginBottom}>{props.verb}</H4> + <Text style={fonts.h5}>{props.network}</Text> + <Fade fraction={0.5} bottom={true} distance={'10px'}> + <AspectRatio style={styles.graphicContainer} ratio={290 / 225}> + <Image style={styles.graphic} source={props.image} resizeMode="contain" /> + </AspectRatio> + </Fade> + <Text style={[fonts.p, standardStyles.elementalMarginTop]}>{props.caption}</Text> + <View style={[standardStyles.row, standardStyles.elementalMarginTop, styles.buttons]}> + <View style={styles.primaryButtonContainer}> + <Button + size={props.screen === ScreenSizes.MOBILE ? SIZE.small : SIZE.normal} + kind={BTN.PRIMARY} + text={props.primaryAction.text} + href={props.primaryAction.href} + /> + </View> + </View> + </View> + ) +}) + +interface AsideProps { + title: string + text: string + href: string + btnText: string + image: ImageSourcePropType + screen: ScreenSizes +} + +const Aside = React.memo(function _Aside({ + image, + title, + text, + href, + btnText, + screen, +}: AsideProps) { + const isMobile = screen === ScreenSizes.MOBILE + return ( + <View + style={[ + !isMobile && standardStyles.row, + standardStyles.elementalMargin, + styles.paragraphArea, + ]} + > + <View style={styles.asideFrame}> + <Fade fraction={0.5} bottom={true} distance={'10px'}> + <AspectRatio style={styles.asideGraphic} ratio={1}> + <Image source={image} style={styles.graphic} /> + </AspectRatio> + </Fade> + </View> + <View style={[styles.asideContent, isMobile && styles.asideContentMobile]}> + <Text style={fonts.h5}>{title}</Text> + <Text style={[fonts.p, standardStyles.elementalMarginBottom]}>{text}</Text> + <Button kind={BTN.NAKED} text={btnText} href={href} size={SIZE.small} /> + </View> + </View> + ) +}) + +const styles = StyleSheet.create({ + asides: { + justifyContent: 'center', + }, + nakedButtonContainer: { + height: 'min-content', + }, + primaryButtonContainer: { + marginEnd: 20, + }, + buttons: { + alignItems: 'center', + }, + graphicContainer: { + maxWidth: 290, + paddingBottom: 10, + }, + graphic: { + width: '100%', + height: '100%', + }, + feastImage: { + maxWidth: 309, + }, + asideGraphic: { width: 60 }, + asideFrame: { flexBasis: 80 }, + asideContentMobile: { marginHorizontal: 0 }, + asideContent: { + flex: 1, + flexWrap: 'wrap', + marginHorizontal: 10, + }, + alignOut: { + justifyContent: 'space-between', + }, + paragraphArea: { + maxWidth: 430, + }, + matchNeighbourHeight: { + flexGrow: 1, + justifyContent: 'space-between', + }, +}) diff --git a/packages/web/src/dev/Feast.png b/packages/web/src/dev/Feast.png new file mode 100644 index 0000000000000000000000000000000000000000..24a1430decdd0e002cb09e278d1ca4cb1a4b598c GIT binary patch literal 111197 zcmXV1WmH>Tvo2nWyHi|>ySoK<3KaKX#a)X_aMuFC-HVsvP$al(aVzfhhWEQavRGuD z>@$1z$TQE(j#5*RL;FDd;oZA;Xz~DQjd$;0ZK0p(_lVGM928%yp?{E_0D7+P-r>`} zePHA@X#PUKgmKl7lYCb*L3#-N2i{sjS>oNh`goLQQ-pUg^_TL}5?Wp`CojHEq@VLP zP+nE6VBj|r^s8IL2Lj40!vJ{F8nC{nlwMsOj>ePv7ORoIBEDpl?1MWu()OW%bEDdG z**naG!$l|l8s*D)!^xW)=3c`UuG^34e}qr!ca}pt8<iDkLaEAA=hm|57Lyn%Zazh) zyvNq|zV%bJg4GKXrdPGHoJZL&3KG|%t@v;=d?nH|bT>3?R<FyPhAXT|#J1xbRrb4| z;B}nzpOAGEi;IoGGtv&zKXg_?yniG&ftx&3*1==v_en^x8q7cP=Dw|TPKaRl$f4Y~ zv39df0~`tjzfi|miknzKSHwqofVGd*m5D4+f6sPSSKUup=BG|OfNzIoAR^E3+=(!_ zwELIyte#jpR}QqiG8d!Wp!@iaX_gs3#u81fMkzLKYTL#R7Zr=0ZXolsj$Az=o(|eT z4yN-Q;v7L$P~$bRPMIDv{#X!}>|n+YGUZ?%L1JChYh>un2c4gKK1lzqR2=VJ!zsGO z&t2a_ZJsL*RtXEjDZJyEELv)<Ag~%SJAC)wB8vH&a--62RsDJN6HKvQ1JMnRSReQT z=5f^dm{yr(OvADU%<8Wx${1Ia?m`)g{Qc=i`B@_0Z@?m~WxONHf=FcmMqJ{07&|Ed z<Cm#56N}lmUq6#h$jS5aU5~n&g=H5LR;e{YwakhGN*VEKFj6*_l}=&Hc+U67q6<@~ z-r}w3QzRj%AY$hHlzOgnL|c1!&N@ftER=VzU!`3+x4Yuk(onjcAaumvpy*!dC5$6N zXJyJqrCIDgncd9em{z4*U<K8=Aw?O>%03EeWFt8RrdiH~EyK?<j2ToGY_zs2jmv{8 z-{QyWR<_&l11~GT&J%9pB6QDUesd$&zR(j#JS@Hm;WH=RBV<VESifs`Ey|?8^SYIH zh{}>pHZ9u!^n@h-$rXo1CquE;tpz3db7B$>@Ylj$oG-iuH`FGQYqM$LIY-0Wfa><} zSTiQ7=p`qLBpK<ri}WbLWjrR0z7wS)BQZ;Ahcuf1sRLG*H{P&@gNgqeb)hMh2KU%- z+k`+Z6~YozVy#grm9$$|ldiLHqM#*b>Z9;h^A2a1kiHXH4z5Gz#N;v{n-=}QL#9Q- z<XG8W&Bcv58w*=dkXIk9pdxn5{L!lB*`>!c8f~sO?3{(W?O+@XQOhJRMilaG_IX9s zW48G3SS?EQa_|T_q)rJZ=5t2M^!k7~x}Vt`x;o;F1NVQ0AvCz9?0dwkQasYxt?_G= zhP~%wTuvkAeo>k09<(F+p8yD9F^wfQnO|MEc#lw|mjoGE2B?qM3{<7nb3ey;sluzb z;P8&N@YYL?LwyZfylbgWsup*?ASyDmPi2)25(`SW;hQ{L(q!bxiTW1W32La8_@9CZ zP4asc%<6CMgI6`b1k9eG?mRbCvym96t;{?1U~jJrP#9gMU)d`psPn3n)^vNDhBL!~ z@NDs82C(axCw}l{e&G^d1dSXvPhrk~Xlx#dGh`$GEAu4)4Oy~oT=#2B@8AcXn1O~8 z<e9AP{Ny&~ygE0N6Xw#vs+C1{yW>%2=i%^BzYYLFf5~RQe|&B|5YqeWzhCVA-M3*S zr^uMxQ<Dqj#x=jrqVMi;ACcu{K1^_TFal1i#<#F6hnkqv*K~Tn^6MeOzG-SKOQM9g zn12UpS=k|c`#0}9-AfDF>3I+371(`l2fM|`kN-U-9<sGYJA@ZQF1G5imU%kS<d$Fw zk>%vc#}fE-5_^h!YW$ye;6~yI2I({Vj0W!MZ1WM^7EQ$;^s}RYhoV~s8ueza$rY{h z<o?lb>aaA?bwnLz@)=yzyXZRdI<~IjZ@h-ZbTE?Vr6et`a>{ByhcGfNKEl1dU(q<( z+FV@MQ^y*_H80sWJ$65Xd0_Dci}y?4Ji&jC_K4lX5!5ppN%q|%A(3l8W$2!0r5<?5 zXAzx$@fk}3p9B<!`paP}Amn!CK>ytA&CU*)rbsv2S*<>)Xpm6&3=%1Sake6Ye}-rm zBVSCQYrfWk8y+za)rLp}Of{doBHn~9X8Vhf<=RyJJ`0qmH~;Pcf53AOxgf0urnf}O z7xO<!RdKxX$s9^wf6GoX+a;>i!3-58mtgV67B{RFbcOu4$i8^UPkif(xt4Z5xJj;3 zQJ2*cS7y6Rn^0xuM>#Zv>|CcQ>i;(76W)T5MH)0w!RupHUxf%ls*!7CJQcBTlt};2 zaNTlmsclfP8Z}kS*HWMoF^>Smc+)4M0@FYN!85a|d~8a|#XJ8k)gF#(b7mMjlsQT) z(RipFLrVgP;>6O!F}9p>WB6J}{kd{~GNIV~zh?ziI<UBbN@EXtLL5KMfEYx2u8XD@ zdj0!THYH^aya&v0ktZz<k|v&fV|}o0L2v((IgrFA<k967l+h9I{8iGAS9xzopD7;w zzc|g9a|=(*68SH;4#E{vtowXGtQ?I75rw|k`uWEfV=)J@?1BG1h<pECfYw7vx?joT za7_0c`n1q@kMS*+%Lw&PDfZSj1^>zSp*Oy8P3TAtf?5yVNin@H(PJE1nmlgKT>qKv z@?*_z{F|C-JuPsRbN-BU-UJ4d3R-sXv81h=?Vnwg<L23M;`!W6AIl9Vk^HxnRdHO0 zM&CQ|h_K31+sFZrs$c7yq@Ic8Q@GS+p-pA$U;l>i;$>m{_q4%#VaUXx(4ek1plOV} zh=^%|Iqj8_eK?ouOY6Mze}3T5XrEI~m_yEsm~up|oxR+o`<R}~b|RwmTgY~?t4qz3 z7-^&1t6m}P_kSDW)GR+KpH)07>w7rNz`28!@@eF7>5t}$v2=QGFFZk1Dk&gjmW|qA z{${o#p&N7Fo*FqaS)L0vs3s>>xgEd}xXwvg8|S9k=?s?$*$R}~mpN?>9^ys4g3SL6 z1-z$+CGTo@r!B{vM?Qix0)I3q9qsyfl#>f*1B{=d&;yUrYaP0MG}<Zi{o`gkQl$3< zW6s;7lU;O#P|PanLo->yQr%mq1P|WnUVe(rf!pT3>>RqsS|K$762x+t^{ZHA{`+u( zI(n8shZpUm-OAxICA%{I-^&Su8HO0<`U8tXQ*cx!Zm?4wLV}778&qo5Ooxcw$$OZz z<|~NDk)iL{`%fE9_v<z>L(;@YTIH<VSt4!vE*ASJJ8}aG+%ga55#gS}xgEFU1R4+8 zAyU=4T>bwAzYo&<87LiSiQl&UwC3}c5GIqjCVSWeH0<Bem5bX8HeG>jIP1*D{{u5) zoUaG;xQIfQR87cJ--a@(#Tx%iOc=67m7yG`ScZUV+%s@*!gZ=>P2SXv+`%8uf??9q z2Vp_DRI=<8KACRrhZ}fG$Z(C;H1_}wmv_7N8vkaZA~R-V(II6mbk4cWeDtPl-_tkl ziAyXTG3m9NDrl{^HNbfbA!Ed{tQqKC(+1T2;21A@A%S8wn$};Wq8|!|MX+G7=)WGP z@_4~hosuS6U4)CfE+W5$2Wc(&nD>Q6;orvFcRdrd_I}J0^5H|HO&U+6lC$86rP;bg zqaF)B!1{5tcw041f@~F<={?2M$t8ru{2J_+ZP^#=?ViE9UUcq5{GdVI<}4LJah?ni zO;<>^ScB+h)qOu!Q1bM+;lqE6_A4Zd=R`47u7BJ{>butPBoD#=GB&+`zgOm_;fqOK zul|Ew=5#f})NP!X*bSd@+BzdDp~b8k`M)2((}<znBd4Q(rC}`8x7H0IV_fzrdVzJ( z+1ajN9%%l@uHfCmI9&)P`f7pjWuLv}yw1$wEoY~}Aja$@d~KxEKrj1eYe=Kltl4ZM zWW4AbODLxFQ1>&6tbV8BF@mhaNRVYc0x1Q_NgosC%476KR8v{7F1LV;Dr{l-Pih-V zsSRi+X~2vKfZ63j_6S!`LV_h$$O{J6U&^&j)y53e|1CWFIeUGs84w%YbNp5KaxwWD z5^>%mo0f-oE<>5oM74HdbFw#n=juTEup9BQ^J<Y=^@VBTAjs<<ZB(;*Vw%X`zdNdF zAN~G}jOG7%)@5djoIJ@Fz3fkZkE?tTZ-Ha%ds!cNcL5^d1EQHzL(e=2OB$lW$y#U~ zEl6ez=7|HdEKW$;?t5eDB|^lkgwG-KH8<=5qsfzYMfw6I!rI_d)MiNYwzuQmeJJJu z{Y@=$<y`LLYx8Qc9n>T_Dd3H4YHd3h!rot!3eGaFplyhMo~JEGt|AnsBrl3bL8%0! zb~D58OE=h<^IWtlugt%$oA1{+-xsH*BH<=n&We%mG-X#C9={8}CA0J4vU*$eUF5)D zy!tBA`R1M&j3-o_7?n~hcQe@od{5^*fG@1*F1IZDac9Fcs&5O5-B(j=Wq0DHu9++I zaVmka#RL6b-TIOts4Eu7Cz=hndAg;3)K5W|gGhRu5Q~+zZko{7{LbZbWCbL)H-HdD zf*{wy=wM-YaMNW5UUra_2aX!5l^IAocd-4%&Y>aHfv!&X5%YbMvG+6N-<Y8FAx3|c zgJjN6+3k2-dfxa~TY6%|LW-ncZhb8;ZVSf6xX+h;ca`xXmw)t}IcwSdQ&?@dy^iMP zK6VENGaGJQ(C0~WYv(o$`kI{mk~pH;@{Ja{e)oXJr|>t=l}yl{L^m1+M043Z#TOua zByi(=(OzAyqV{H#qHylU)Q&G3*eW&(!HA2<^-scD)vtPTLM0w2%f8}~O&i+eKfT8< z7T1}{0`AFjz#zdvLjUtE`aDAa=dG_j0ats!sPqJ76E20n3zbB&PBL$Dyx(%)+ZxL2 zoS>LbYL^-qJlGn_FB85W)~sEbnDXPmvcvp+@EdPGxUosLu3R;ySXEcvmCh@1B=~5e zz!Chaq@*lRDn)lA+Ogjw7TnG~n6n?U(igR2Oh}~N^L%biukdkAkzAfyqo7|VYYyt6 zp#cEz3II>~^n4B8V59G?mO`GZ$_is=II43sv;=y5M^sD|5X%6BIdnuDnppFVN2V>o zO|r51A?&%8aO4xowfBQ91_85KD(aRr|KH^2vVdE|WsPM(ly2!&+?1VR9#Ecf-U2Sh z%R0ZAC-H%bMAS=T=zjTLX=S!_V7iY&@L~~1H4ncK!Kz*!A5Ws9QHTodmIB?JYZR^@ zmSx&7Vtd*!^`U%Jv#0s|PUhNP;hCR2<C;#x$A;S9`3e8!a{qjW&NGyBuM8uNv67yi z9O`%r_M;VqkBqzJu<@rbi2<%jc9gV$bp5N{=Z9U;9f5_Q{#^ie{$aCPj4jjw6)~tp zAPU8w2^ZX4!`;d&xuPMYa)++-IcM0g4sOF+as%#zYx&NzMo&ckmy>J|a}bM`Suwbe zKzM#_-wyL|KczI9`$`h7>cM3qqZ84+l!JFT{0DELRsA&~Ve1b61W|nq@d6(TJPx9; z;NoG;gwD6J{C1<?@g-zYvKp8&Bxa=BXTGy^)VsBiy{?tRKE41+lJnF^j#F}6!-8ZF zEwygp*FT!NN<*ng*W&5c`l9U@uP5g5!rr4!@OXsoWW0=p!guyV&Z3(<09$gGA6FvM z5=b|V_HTQOuM>V`bbcj6aD0u6RB`JOU+<qy!4V>?-db|?e$?JJI*VU>IueDH-c79L zKVFnUu59Ru|9l(CD03uS*^|$TLi`DZOk;6|J6zjbFVT<hb-Fk`17Z;|Nz@y4ecpiu zBMkO88sORJH{~FU#$C^QVPeIs)M!#fhca;hPs7}fI{StCr^{>g#OW6#t#?WchAr-E zTxZ4`0Z>EPuO(V!i3N~gkQmybV5y4?MwS-=w?!z{YyA!F<0ZC@1Gh&O`jMvo_~YHz zP`2Ox@xeOPt2?j0z2A*E&-eawL2n{|UACPdXF7B>M)L7lh?xBiV715QA4y|%U&1%R zhU~nCZ5)M}*-NV{#F3tYRVG`&9k7YKG6*~D)^4u{J@@CD8JRi;5$KU&_ngrgBW9@U zJ(A!T|6LgWj7zQHJ6YmngG)YG9Ivk;&x^^ee>*Hjew)Ypy%;;|Jd)VP^YDsBjwA5i z0PEcn-ymGtK@6hLchm29I3$QeMK7l9m6}v6-&^{ZZjTnVsx``Ec~`fPWha0|8%@0A zgEYm$L>F9Dy>ZvBqndL1Oc)n>wd=KwA-rT+xhA)@yyIsa%VL0WN%S{B9ip`lb-#UO zX=06BOkok)X$p3nDwO`6yt5<#ToG->n2lVsezjq)?+$9L2PHX9U@`<(nnC)#UK48i zBCr`yL^P4JfT#_Id3N|4$`$a{Sx3UUs_MAO0(Meh|0ME^Fk)sz;_+D@N=&#Bf}<5` zT;upvJ?8F?J8ti$%_4^Knc0`3rs`h?9?m}=)B#YO=nBQQF2w&z-fM79JHn$MT13f2 zqs{qdC@#DncTJs4BmZ50{6#{vL-oz(8pVTa3jeh&EO&~Oilos-yp9KIn-M?XmzCyu z{kbEm?~`vKIXJo|z5QHkbX0x8t*dJg@k&w7I({J=Kz7B$bfsw-QNKaY*}yxDH@Nr< zwBcV3B;UNOni|S$r|q{&dKoF}%k41-DSgK2#BeM86N)*&)n#v=&Bt>Q@DG}%pP7mT znna5{hJ8JzR$<`mQW@)WkOe8AM+bFNw|CM7Ek8VKkrO>A4t2%mMh1QA2Y>N3&yoCn zbO*k=g;IuF!Sy}nJ~LL<BzTZ2bx<2iNQ=GYF6*L?qKi)OdxQ1x<&T*XD&9vy1#DG- zSdD_8vJ0F$yw{A@gG;8d8%3f+yg0hd2;XG>t0bbt;Z_TzKC|8KC0OJ1aJv<UAJ(wW z7B_3`t_tCyy30kgeqyJjsRaFdKD>GS=TxqwA6Q~}g6XK>7$nh^My7R^?9&kJU?C3@ z`?;3;`D3r`9f@C6J_-Mu@qhSbQ>6jG@Nkz6-dx>g-L}xxA;Tg25tm{eb>Tf9mSTN6 zuUz5ptohpUoT47JB)KDIQ2N;8S8DI_SD%+tnHa}XX4!VCc#)l_A+4?g6TgLv8^P?# zN!Ok{uDoW*8o#-Fwsesgn#$khRmQ5O7{tmc+{#{|*~{G;dtXhi7m)9k)04l@FNc*_ zZa%&RZNeE4&Zl?po9;yYVjPhZTeOV91qE2dYgzWna%D14g9l|#JwD$$AB?frs_igt zK}ri&4v-yHVdQ#pw(gff0->z}1V1|RKxkMWHnqIi;X>@WEW0sOMDm+)YYx8uecRZR z1%j5G0^9My+e1p4xi9QseGhN!8P=aFMI1WSk5Y+P$|Ppb#O{$#iZO0GdqUT9YkTcC z<0K!kVXp)f;Qsw#WqIj~=@;v=^AO${T6=svtfTvy04eD<wSC$PJGFpZuAW^W*B1x? zk2<V|)QaJn!AEGcl>#95m8XkF+iYa!w45M5V!z_w(!`a8n?Dw0^wl<ni-q5D$q_wI zv$CE)hXIZ=<Yr6rdsM}G0)VLiIBM!_29}e88}947Tg(+<ZaX(&>j;rVZ1QVKr-wV> z5l&)D#CysZ{1jgBg<;4+UANud@E+{;2g*S?lC!n$rjxgNYXoK%kYeDuK1>3FVvojS z#;;BMI_*zdhI#yyf~AFKI1ug&holcBTXUAUr$zA_w39Ka+BIL&jmlsmo85<Qd(sMB zYfsope3R*wt{MB#H8H3OBn{usLnK_jv1LuousK*W@P=5ZQ%#l|tc`<|-NYOj-b`%y z&jZ1r>d^<i^h5}~$Dh&FhrSogfQ^%L(Xsl^(Fn3R*Ax8f?d1mpxsfFjV8g)L_Eq-p zX8y7Ti2OLe{`|SKb>X0O)S;(YhoidTREs-!cat{Cs><E_eXzmwo>VUlxs+J^fcRB` zC|kk~uW0B3KmHh=y#!yYpDyL`{TuFz-L!~Grn9EQqDefuUexX3Z>F9rRNmq=GDowm z7{`Wi=RAM7Vg4Yqyxk?Vyo0GM#U()!i=OPM%Ua@E8&CV=I~%ozcCt%hZ;-U;Uvf`w z^mBms_LKgN(ij|3q6%RY?m&sujfsW9eYcj{ZO%Y<bifyARJ3@fj)+>sYu9E?FOBO^ zWsKhl_MyR&6*%Tz?49qijwHqehMj6D%MdR%6}&`H7TS)j+eUsPo^(Z}`WRA|P{<LU zlE!SH;$O!&c^eGVsMM?(Jq+eH3pi{7)l?4#s@n2?rZQVsoy>+7f{F@L2#19H*NWe? z=x>naYp#BppLpdQ{Q2#j`QcAU_Bmk`cb$7oB8wdM?s@l1k;4{--cj_UfO6PSb$msG zZMoyUfi5<3Q7f>7c=M)r-+c&WC)on{3%HuAAr^0txBs}?2z;ww-%F#~CL~pTqWOzw z$Nfk*N7OLT7Qvt<aI5gZ2l3E`A6T8@68RX|F7A2eXXeJNkw@(?TPma1=~+8M!{uP8 zo=_sV5N~de9j?#zen8Y#Gw&f}fA#`jraf1M=v5(;Lr@^{Ch;@~*GA2}q5|nGyZ3Zn zZrqIH9giGUt|fmf_B_e6Ne_$Jq)s=}tE{R(G(x%90*L_5!uxvP0NZaIHK2Y=1lblo zQO-NqfM<xc4R?NI)_wNFb#eVil>tMfA@4~nh@6yaRRA$Ys7yYs+qq=Z{tfwt$iEll zi?(w9-%CRSnoQlYedYMu8$7a{oEkS?J147)@e^w45+WsvH^^9!Pv+7@<V<&yXw~Ys z2oHg>+GpMiiOW@*<@#jVoVIk5V5QYt^_{y6GS`;qKjjD~n{#bfhJmVwZyqR5kqan- z@@rtWcEKW=_((JQP@D1!{GhcfIgA)Xf0unb1rsaZmzPg0QRj3NSvmm?(~i^<DVZ^; zKtofPI!rG)kj9o7W!J{{mo9sgPXjQDk=%bwW>J~aO^193c21l|)y+}NG}*5Puf$F= z4#L=7%bb7WNhUoHJ7+GNr~UA>jat>CT*h}p8bu3cvXfQbgDCJ{a4DjB^b_ws9)O$@ z83~DwcU@cFD6jC`j=_PE#E*P6a>tEY*27RVF-Pu1wX5ezf)tUyn)T^hLx;~bH`DhW z9Cu(VwmpBL-;15)Ln^`Dd7yw$r=z*HFp`(!=xnF>=ge3WFYENzkDn{oSI1|p5;1h3 zT^azJtO)A<OkO*ur)d)Bw*w+`R*e&!S#lJ`oKsb7LA_vpCUvPu9X($Gi2)Ak*SJG) z54FD=Xs-XsgBbLoY4BozHUD$o(C*c2$KK8xm-eBF+O^Qh=!(>%&bVVEiHd=oTCcSD z=_yoADBTmJzno%i1mSi|54e4JayjZvQ^pw4s(|4fZM-M>mlu`Xt=>vMsA|}C-CoZk zMGx?qj1fEgz1y~cp@B%@7fu?WB`oI6yYQal*R3&W_UQPKa*1gsO2`JXjtPM)YScHD zFK)`Kjv*xrK5i_G2%o6dR(x*+8lYz$)oTDAG5sSVW+^VCp-<3=7^WrU?0$ykfHstO z1hJb95G;$zH|#LUxr9HJohgK6$?^ExjFbnK>wc}~=4-5T+ndDj4!o~96duZx5BudZ z2yuTNz4K|og~VKKh;4G*SxEdUrGuZ)?MQ4UrS^BAg#V|dq0gsyN=*6$6$Z_Nu0q8s z=eTCVa8Xqx@-0@t&)Pb;<Hu)aEK;@qBtFKtITm;9<0cRk!3itFw9Q9R=Xo5+RXtem z5}LJ{E&hw#yQ=JF=BO*C(1(as%M5Ay`t@UJ)hd2G32=ViS&L}E*tTBhe;g!7YnhsU zk{vFirlG!sdJ{iBY<=2e<02Dmb(r489qFi0I~|q6+>^V9Q?=|ulE(L8@@q4zH_nY# z{6jjnkOOxuSA^M-qxtj_LB`D|0zKybzPP)iW@CfAXp&fRB;g5)0Jm=}4%{qurS$zY zRbrU(F*_qe`N@ZqsJ~g2^F$V%<l?yc!kV&Uq|M;<q-Ve^@*k#{+57nmo5?b#fAZ%C zNI?on<l;XxG05_GVSYqQS1I`<vUxJB52}f}dra}FWg5lN#oPNc`yY3$mI3RQq--xx z>%2#LbmMVGW3rt62We;*bto~!8LLn2dl;GTdFPY$=+=QV1?+7ZfYC7yO9EH~#Iy-_ zw@}V-O9?PvIs2VwkA4@|DS9h3<atJ(&sq7!y!i=DbpFsr4pXnIL`YWpd2m|#88$Hu zw|bleEZ#~lGbc#6I|jEC9@TWH=GUE0>}FFfv+yZ(v}`~2H&cEoId1*@-}#0;3G32w zfUEG=z@C_<pSZ4{w(2y?79w$gzO1S}`cMS3Z~v)Ez-0})7-svRi{$G7y3W7*Mg&fo z58V-(a|!ZF()t~PZRD<TlDHI?wtKvjavi2WGu`sHdGh2Lr#~5D0>wRmN9f|!r0X62 zRMSDYotWM7NUW+8?A)V<m0VJ$p-j>h?TBj9D?Sc39eB2BJjzZ<S@QTm2C$X+obBCF z<fR!u@ELE~fa4YgldNuw;*9Jo%ZJHNHjb-)5#7(WGAL%!T3IRd?ZRaAxd84PtCb(! zr>-{*PP%zE3G99(G5f9^L-b`*@ah@JYaCUkykRiX)47&Muu2?*%zo!CdwFM0^w#8| zlR&Ch!U~jR#=YrLb!)Rm9|sm?o}jWDlH%>nBGB|&9(FA>KFl+}5rDtT8gY^lAAdA* zMdx46vK2aajGMsZefBPHHjfJCwqEr5TVANcj1E?rS^r85w}vKw>hTp1owGQJW*+ra zWLak7(gOKzz-IZ{f1}uKzaj$S17izuJ6{tmXxP70H<tp6wYTtF2_7k_8QDR2YP=l@ ztt0Z+8cV60Q|X|Dw4SR;a1vr|Y&KX-1quk^D5syv8oOE1fHgYQI?QfVhTzlpt5dSq z$c2o|dwdQ6ajst>7{c;E0QIy1R`E(sb=3D%WNFtzf_pRNM!=@0V1f@8qw0;p=O6|b z|Nb%^xp{wgV{kC!|Fe7to9ai)-=|?ibD~s+$MMUYaEzkhHFaZ~BD+d?+f`=~zB_p) zJt(o>P$E9_lYO~SSx88RxWM?7PoHSs+XA7fq|K;P_~iqBJJ<~(i{-D7{Vf)@ARM<W zDsuEF{q_~q8aq>g33Mb0R81)$Or$6z8=5O8pqkWUZVLa9I0ue1mex_;c#<40ny6M1 z`Pt=rQ_ns(@`FzXF7%$cq{dX*-!yBPM_&`d<00v-95IIJ_NF5)LO!&20_YVzr+kI* z^lJ^b-_y7WJkE1`xh&pEkEiicsTC~QW9!KfGxMwcvl^YRen53cLbI(}#-&*9<rk}b zBuh+Nl0!)3X{eBtt@dH4J`h~Lf=f8kQV#&WB9+Vd>2}aHyqBB8wY*leqiEmbKH}P* zDe)5()DBMweY4|WvBnuNFlb@ZdajmBXh*!)%Z!Db_&wDxEsso&g|Z+4i{rH0{_$$n z8%dT*fRrGf<Tx(a+0}+dcTioLn(TZ%))r!cAX^%4P@{SndG`$n2eVG!h1=ZT;T3V_ z=WQ2_NI6$daY9#uYS4E5=*%qxZOVikEXS>}ksUXy3=50964G1ixck>i&p`n+sxVV- zE;4*>?u%d}7kbe*XQ0sb<Q2TBy4Ug<KUi#L9wbw~5f$%6SsXnWT(wic?o5GJBp^HE zx6OydSuvP$ILV0@w6QzVlt?GG3)D#_nk~M8$NbZPSns&bvsxO9u1@XR<kSYY)Cm#C zU+_KK?p(b_Bh0zLX+QR*tbp>lmftyYm!f<MBo0qvlXTh9NlSsI<hDiY@6A5hA(eT4 zy@4e`*Ps0K4ohCq{4V&3WG$&xO|!4fHCHe+%0@N&5=<Ut&>R1CtE+<B(8HyI<ph{v zF3PLW+t6biz07m*Di9S#7m|WLFlg|ZExJs<^`8+GwZp~Kzl1O9J?_<nK)DNz<PU@O z>~b@mz1u<(L=x4+q1yQMgU9aMd9BY}(i?mnL?$%ZawP4-GhktfG-M=suYLlpg{ZaX ztNL_1{J1I_Pwz|ptdvr(dY@n1_*AE|G`3muer>9mkshs9v{i;uZ4p30+<jbbIy8+& z7}ZEt#QfYEXdBUz!uvJsB3bs91dbi5e7DxD*<u-jz0M=hF9u!WF?3_Fv#s9^o_9=4 zlj9m)+q-`cH;OK2`;!BAccOpkiB|by6N>SGk>FjuZ2WD8(5zS|b-%lM0FPk_DRQg> zeKS(Cw2pgZ*)hb3J<b6S_&pbh{UZIc{vwrv6Zwg<D8Vd54Luvpr<kjO47JcUc`dd= zufU3kVKg-g@?Z191CShrgrRF~{a%HEmah#fD5j@}b~m%aTRZ~SPF4HhLM~4}wuUE^ z{Y$%h%)yzzOL+J&5mA9}Z|JwbC}i2KJ<rmtqvs#C!rQrWP5Rth%?33O$-mAM|DYjE zH6uZMHuUj(A*MGf&S9_6>}R*_L(DSCfzY^T@+XEbKnzjJRg>~J41_|QS;eg==d|FQ zN8R~zNkXkcjN<+il#pV&CFLwv@l#q_$Q+p<Hy}4xJ@#nYqTSQd>M-x&qmo8!rEkY~ z_J1oYL%U8_P|U;fxD2N{I*iwi>AZ6n#_vi>yxg9;IOzVT>Wj5o2c{_lX?$FMbP{jY zyo!S%Y;%mcW~KCJOl8e(RYSI(*;4t@8Q|X#3m;#qELlUuwOqcyhqH<?x$p&9ZWa?N zySvgjCo7w*>y8b3r*i|bg_;`|t?>^$W8y&=Q}~`7OT)aRRRNGHllBeva>c$88*Q3I zfiTu?fSd$aqDtiQZ|ktLVuNBl8pe}xagx{jLlrs2UU2Yy@7Z6A4*z|eofYITbBQW! z;G){WUiJ3PNTm@c$1WokeU3oHbZk^1tK1AGi~qmAR*M~Rrfj}_PUXU{4C*3x<9P3j z?0~il{n_Q5Ck+n)HHOLRJmVWe24-!RWYf^jVexq|0L9>L?2($I(Ul#sa){E?7ug-y zP^p>|RFsYYY2tK$CoQS=72n!1CdC?G6gx51hWPsSRMm{&f*(`HSL^*y;pXZWOWTft zwo;JO1#Sznppr&j-FBp`PBLNPAiR4bn8QS7mhhIh3bO!zd!dFUP97<cy2wCuc~Z8m zn<sg&MhYIbT|L<vDopL$&=sYeBrOUkICF_;NFhZwWOTS`(?%b_0{C2kujgsr(u7B4 z1JN(eGIhwpaVx_I?yFI?%ELeG^&Qa>yg%&pdsedY&eC^go+-GC{;)>K4xUC)Fur4s z6`0iQ9nLIp-N$e>lVjK=tO&R^?6}-JUcPW#`>Wk3IX>NLVpLEhPsze%0u9ZJC#=65 zx~qifCWhS>p6@W!kP3liL?Ic|GVQ#gf7vY&fU|Yfvu<_1IwXm>T5Pe(ETLkA4;eg{ zQ6-sf-m=PZ%8OiLVF${Y?fv8N8*_0mV;f~Z*ciAA@nz;~c<?dCtl*@25jUCxVrvcy zm)A0M-VTH9;+R6$h3jXKhleajgOT`^xYBhfN2|lmZyJherRXR1o_X}<FMObV?_X>z zm15Z(o!*;QPElP7f(0|vVcB?ntdlsv^O)rHCA1zxQM_`OHD+BmpPH_wQgBfqccC4B zyva^>p-@xoa<lc_$zevBeL8p$cF3IUg&CS24~1e&&``asts~1<{Bm?tyMYK8HN4Ou zV{ZyS7tV|SMS5BZu|o>%ZuS^NA^;hSgk89Qlo#vqTd$O7R9#Y{($Gsu%Q>Y`l1RCR zvOII-jovd-cC4pFQ#|g(9uZ0EZlL(I&gr%QY`bNBb=g|C={P7vS2Q;LG>zB>g-yCC zsv44l(LBWU1NAZl;nW|@Y?JFPlQ*gtYSNcZC+BW}Wil(bTE&{wg;s^Y$xZiYIceI< z=*KKK?{>6Ni<Hsj4BbS$*^h-a98rbBe;<Qt!m;{B5Ca6c%a?u<*u5kn&dJT)m+h}+ zgWo1Tiodes0AEdRBu-Cav2~r5Y%s7VBaYfO->41PwOo1i1O|+_$3|f+?UhcBjsZz2 zjzuyEer(Z^me229dv8AS$kM1qxZM&e!|IF=Gti#d;oRDlCeAE^l2x;$S1rUwe{yr7 zw!Z$47DKwS>Wf)iWlV+hAc|063v{lhn2nvJ2K@=tOHxH15rr4QrawpZz3jdGfvcs0 zUF-TzyhyUY&cXDHc6whA8dY^j%!3Q}IDzVO#*w(&^zKan4~L-2+Ah(idXW+tB2R>T zxxKXff)jUjX#%8~kIkO1%#evs!Sm^toic&;v4v(Z6nx|jNrSigxQA~^s%i9{Be|v5 z97wf9K1v`NQ+DVlGXPSMK6*7A?pKAZb)^-Y-TQ+DA>d6no2mqUZ?;fqeM{R{C_b0U zEONU3n_lExRd9+gW%HGR8oi#=9W(MJUhE4%7@cZWcE%@WcbNyI+eZ@;kcm|hQ{i4w z{u6r4s*SD-_e^w&)U#`-4KK1OKOZ`(gvG%#!h`7D{_44}H)Td8u;REhr?KO8qSZGp zk<Cpv7M*7!*Yt&UAX!6nm%yje#!HmGHG=iZ(dD)$#!w4lVHJ8zWt1bQk`$!q1qL=I zbd&7@Pwz9yl4b6ng7#ykRJSoXleRz%d(7m1{Zb+NM(m8u!F)xbS*<s3v-WPG5(>3y zLP9v~YQ~mdskb|asdhrMy-rfnBob)zG|rTjC_KQ|XYN0k>NmLqJ5CLLHdf!6Cy-V| zbK$j5pf2BB!oP9&@<DiBO~{&aQG_M3#E>{!w40Mr>hwIqD!p^PG3r<Dv~P(!PNyuL z*+<Fs>5k18P+9k75W1&I3mm<Np7Xd3{qzrL5#fW)>_NLAAB$Z@n~0BksWUGmuZS(h z#%d(K%;hkOb0wxsWyQ|P5`#+@-XZpI@2asHW_;Z5K;aX9p?NmX(m#(uG>M9a)RFB| zOS|PnH!zhjcC*)qitzHl-9a<|DSGn#9?$KJ^`DU86l6TFQ-@K_262(t*dtf%KZLo- zF^3Lj?LmORiLx3g;#QkpC?{9E&mIM+;z>kIiW$%wclav}!!9bOZDi1S<7bl(Gvw*l z^Ri2yDT6|#3Dn5jWTb4L#w?Mq2YkhYJs+#JbyF2yclzEDa$fA#Y~xb*<a-*!Gx)%* zkrzN;Lsy(!goi}v;XR#jpy>?)AHnnPW@aHAIYTG@Ock^f*x=PZcRoyGgT+#dd1O!~ zCbSmynZpUubd5u((83N=)R=1;p|SCuYiGKEbu!wv<!n;9m0387Y1SjVW=~UsNAypr z;5J**R7|_r;tgMgT2{*Wmai+yeM{ssze&u+aunhmd!s{k)4rkZF;rXyz8*9&j>5#3 z>0H;4n~4Ec>~uS9F0e>KzswSN(f1>{72asLsl<W&Jy)Ke<7+i*L*%JHJ&_C=;i)(8 z$jr&FL_$rej*2C(|CifkhtZDUd(X+hKr_{w0|95*d;%)8R`n8iOvq0I72J*NS*K!9 zNiz<X#5D$wl{1$VmbNS3F4y83?rgEcpA&!{STyOw<5kl(;8ICbxo9{#5}Q@6H$!?R z&*wxS`!bdS-p%-4rXBRuSaE#x`#9!Ne&~yEO<V<@T@ZBUqL{vpN*Tn97JDYKZLR-h z7}~8WlKh@)@q55k5b|gjmrbfPR2WtG1ZEh@70Op5u3Ic=9t%o%900Xq`!_F>oy56S zFk%AB6tl^)D;%894rivL^(yrsrM-F}*HHn<-Vb>2bY}k`wSkrQ4^{q%^rdW}#8#o7 zgy^5(ANZW)1XwEpa0XC_Z8!t~S5tDWFhr60{}!O7vP>^>2e3^9{u7V7umj7dqNn~Y z!j9xVg#TUI{O2KyG7?;DXx}$$kwg*tProB%O<D6t0YJ(yOG$!roK*E<eVnU3RhUje zMJS_yw48vnP2Okyq8oU#(m0IZ7yJm1rGDo7L^HW%t+hZ2BH_pT69)}<HCzT}43Vsr z@t9N&XqijlH1ony44|R=%!9(t{Y!{>PFty-<Y#(8))}XrB2Tc1?XDtL80YD=w4r`l z3Vr94QuGT)1_^c9vOK6jfb#4-78?&JpNwRI`=b{_Lj_lWPC-sv8g0%MV}+VA3*X~j zUq`)zpLdQxy+WaQnt+#7{$M{4JC(E*^DF;~lF8vGPP6_tD+283re;$s5?a95fsnIa zKmor-u2gJ3e!6M`Or$O4%K>d<5@sX^nCuII5;ra3T0UmD9{!hEFeNSUSBX>IQ-~!a zbK|?j@B`BvWVXm??jBYL^_AR{mEs)Z?>U4Xi<R3tV-?4i4*GG7^Cc^LCn@(E@Vl|B zSynPxY2EU)^FZ)6E_XxC%=h1+<r9sl`IBJvh{Jj;9>oO!Ia;%aj6S=QzlOVrHPa1w zFd(K{Ml+b(bh(T;RNt;?L|U5i7XnjUlRHrNXR_^d;T={q(|wJDjrskfh|IOh33$?e z)1EnJr)|kl=~}Tv(9<aMll+)#>IJfYwDx;t+0rtKwEm4r7nSDnLZDae&y&SyZnPZZ z6472~?ri71o4JRzN};TwF}WB*kR{ZZnRF9N25Y@F#Q5HKb%1VMNY$jl#Wf&6$9qZe zTD0_3-Efwdk!9wJx95e*r?Get%de9tx%`nFSkObZT29~}4a-LgVk9S+6OC(kvxmoG zN}v57Zb>PgLzCi!_=lNvGx@!wGo6vXpvE|iFLq9sE-Uc3=tZBkKDVKDi~IMl%zgaq zo@Xl)I|wCPr=6<+n#sB$p{%O1wPBMWB~L3%AcdmH0zu-pS8zLr^htM{gXhsx5QQHU zgloL0R37~PgeftbBpq#rCDUh9_Lp;mHH>UwO?I6+yUDOv61Om6seFG$9CK)(zMM!J zpOIdlx}l7#-*?c%lTM?9`?g5$2+o2gBV(I%z}8#&@POg3mSzD~@f)Qwtqyj!D+KHy zEffOa=w^_90nmt%%EsF<enXU`xLLeZsb{D7|Dx4zmMD9EYbq+k^p3)@D9~N0D&w1h z38pKQdy>I*2+TM_m4^=PUb5_|DtP;#M;%nSR%nj%x=*0*Cc?`2o8JrW_<y_hO2d87 z4|RSezCmsWuvdkZVO)sJY5mE6ZGy_d@kiX*fd-ZeM5b@ImP<L(g7P<!gs4yK&LA&9 z``IsJ8D71ay9FuIBP_<wKpHKE`MIWH*<uwV3x7I+dyy=rXT-#l6eaj!6E1#I@;fwj zW;uvh?W6cMLru)<Qpp>3O;Rp6FmG|yhT6~j8?FueLQ^$hxU_XW{hXjPKsC@@IQhF# zrIX8}<R;A$3Z9;(9?f5^8TY`w+}EZr1d4J&J*d>@;1k7|{S-{#P$lQTo?C#5ceqtg zWAo^<R;KIMXmwF>T^?fhokLhmJ1OWurz5j??&6NaY<TdUBUsV9q7YaaxAIu_ESY|6 zNXcG=B@`KUL#3SUCKMF_1W5Rtyx#?|(^Wu``Iw!wmi{+}oyD_<a>l`XNK;Sz-BcO~ z1G13kH!VBGxruL)nnXWBJ!i93-S(O(wG!R^lx$S4MOSh;in;{NAWjMGjBRJYR1i!d zrb<Z3d<6hbpRJ7|315~NBAoCiIW3J|!)=lBC~Ud#$vCohQmp7PS4iVe70D8f-C}oV z_UUS<)?ycKAEYt1@Eb$W_t2jxJyR^pG}E|iZt|~|0Es;^wD~pq=jpPs$g-W3u_cd- zoLqK5#5Ray=VDOeLNKS-&RRy_M|%0n-cGQafM{CgTRGo)&*}G%vlDX1#RE#sea?%j zQN?P{gD}#RTGR<P1zUAEU#lT*^nlAG6l&moYyRc+sMfnJ3Xj>y0T9TRnN{OO2NdA^ zPc&7QcdBb8Ume(o=prkd=07jViRSUoK6pB4h0W}Yx^&LaW(0@o^8ANVbcu5*pTQv< zBnYsx<&1TT=RDsa2XgTep>Cz4s+%kOv8XBH6U&@=5YbdxB{M%eiGO&vAfNDx8>ncX zHM84LZj$CgQF{_K&=3u!F@%2(3segSnHOx)lYV{qt?xkoe$d)blbixxT=yz8#oA;* zz2sZ)U&-jdHIZ@tuMcSLpPypAx>P3qvWwh+2yBiIimqcY))lVRLlTy6EyBWa;PDEb z2yrYwz*9_D$^7&-4{Rzz2l`@R<$eAqNqF)5PNdUyfq$J~_s6lY>{CqBHUoAdYp%)b z(_#{~G|NVr($`XQx{DlMajt9#_okD!E7pJA`zwC7#o5wg%;zlbTtG7Aj;5U+7{&p~ zG=^Xy!5BrW1pQsGwu|EQ<ZqmRXrQ?1zfu_Lz%hLN9%rqRDuce>vxORCg{DiujCcZ+ zq6rsFO~a$cClhn1r6a!hjbg}+)^V@V6=)^g@@r(QdCG^S_vt$?OF2_}B$oABp_Xx# z2h|G{@X>lI;q#fDFk5NWSSF^WsO<dy!m1?44RRwZ5D0-Nqfq_ABj7-xC(bA#>nk|= zR3Dzzx`GV1P}H<im+;e`hrJmg%7d}$yNuk<K&Zs(OXn2F;B6u;j^jjlpLepGiqz=U z(L1oP)bp7tl!5Hh-JxSZf^v|5qCej5Axh0dgzG$xr!k$Cjv`%1NUZukMsT{#Tf!6~ z!z$x#=@SqM@o?HZDtxFfIXZYgVsfpH11t~n4ocDXwt4bCdnOr1S2eb!1TN4b>T+rO zV+bmeP`7!cc|e<oy0RfwDC5^IIKlGi^mf;ta1zWp`PxPU(4s5~I>7k{ad5TD^_+a? z6M-#QD6?^sWVyyLaZip^p2Ycj1}>lp5?^xhYeohWxUf-cJ8l)B$dt(JRaXqt8Y3H~ z9kPbzAR)-{{R@qoWr0VbVf6Ph8G1q!vcP;L>E}oO4<gbaWRj1=fX#5RGr5KIL%a(* zp#_1@Mq&WQNe1XOi9C`(GF}6`de)Yw%x1~)BoabbYH9t>?+HA>2}VL!=s_TUYq@DS zdYq3dGjV2Ojg_{dLbG4*G*kG*A|M^g0xCwNa#ybp17t%(DIvteMEs5!zw0}p{zg-8 z^cS~`V^BqZtlYZZk#&aoOdjLUeK<=Ps_8GjCdWIacUtjjB(u!n{g(GSc;_Q}muV`7 zq)$EWt9uOPuKsH6!aF~`P4;WjZ9iGVO}6ndc9WIzLVL|gC;>t(6R0V<?q2>S`dvT7 z?J~eE?rtCI5x+*yI_-68SopS-1K_HGa$X7kIg(|jTMrsw!9JVS!rt@3KCWYMh?Wzb z;dJuRblrhLx7K$EGeM#7EyDg>rR&%0PM#2SN{&zSwiHD6Mw?9UjU_X<zxq~u!-#ck z)WK493|pKsrCha2=NHmCRRgmK?2g#|w(Ds@C(34-pqj`}-hLfr*d_=LuDI_|b?-Ps zi<i=?`6+C$o~G8wVWYTmPiA`rQ6mj+>2&U7i#Xo{u>XFlJ0q-5;K?jO<PpKq!URea z%d$7)Uzk5@>Ca3H8P{;5)6A7pM(d=Y$>A=Nn{56VA*?MtwkN!R+;>>{uX$0gj}^6u zDr3MC+e%-ACB2K}_B+#<w^Tvp2sj-W>sd=|pYLC4jhpef_TI0#`205BB`-1jOBpx0 zIVTn(ue)@=zi{@G+ue2>*+wYZ9_of%i(4mtrst-EKbAW+z>%wnLJjjW#DEiuKPRCp zx_m3wLY$|1s0}1DYG9aH6Wakis?)6$#t|Vb=aT5MFfJ*fgtHW<i4x_bY5qRnw#C^l zg@k%^y+&M_k!Wt(MfR8N!7uf>^YNlNELqI!Gnz6n&C=91Kn}O=YMUhcPHc7iVqm+f z_oC$$^kUge>fK^0pRrg?<Drcw;H?#>Bo21)AW)5|J5%39Vqmv3JmvxZyh~Li{?Y9? zXV0H_>jz~|!d^<K(8@e+A}bt}IfB2Fw@p6X%-zM889t0CRG40z2H7kRMOaN{%oZEw z3K{zyC3;8Wh?2;da^A44erP5XeR=kOg!0{P^n-<nz<-JEduwym;#FPT|3dn--bFF0 zUWy==D`!>ZnIy4_M&xvc<jhc}z*Uis$Qe$auJ@zFGZxvNq61r@#u~*^?7RP*lH-!@ zdZdu(F6=LxRGTA4@8WK)rVdn{?E!OSDia698UEV?VI(3){@FtDO6)z0ETsH)JMPc{ zw4iy~PQjO+=`Vq!zi&9oD6Hb&b|Q(RddxY0{;ARzl|IsdDhl_P=^5bXZ6tD=Axt$2 zZF`>P{d<MqRWcjpiU=q99aS>CKYc-rbRi&JO?Nb%gD7;M`UClV`n&<m`ZIGdHshj& zcNNM2Xe7^W!R0qGxf0NgPyt1jsw6q+v3W#NuKv0QaVw^^WeFz0`X5E@#}eR!h1El@ zcG<p8y~GC|Vt9B)0G%)5V%aUoPV$0}x;E}-9M)<S?R>;toMTjr_;XZl?X*A~x59cf z4ZK=ApWja%=A_qinLE}nsx_uqKar5^$%68|o0~%s^YQFmiqgF&%qX$?X-sAc+S-MA zZ`T}Bu%Ja<IrMhMc`%Kp)IB)Sl4uAL+QmcPRA}onT_T)Z2vnz-?e6jy_8=6x6V`9n zF7o}j2DV#Z9U0nUj|lI+#Z2XODD+h{hMcmAC8nEWJuNk(lotl*=?VrMYH2(U#(Q}1 z``4-zrH~YNkTGJj1&OMx?8z<uEIRfY+&}Gw7-;^(@rJgqQ!n8mv9K6^fAo9l(s7u& zX((a5<2H{Vj%b5iB-+sFC=OZtFUcj&L08M)QCG%sCcOM;D80J1diJ4AnLr3&jzubD zDWU0*fSL1P)^G1iAXW=(fOQ$B#SL3`f<tvNDEr{c25I^?$NS!hNP&w|%1C)|IK|>w zDP~#;`$TD1Wqx;sh%8vRgX4MCRb7}213DYiF)*?g1nr)zT7o7G*3GA-wNCLygH@pY zqM6PwltEhfqyaBqx%+0u&urXtvmBWXu%V|N3nh0o>UpduD4C{p`hFY<%(PYuA!Mws z|9DWT*jdqIS91;5qC46WKEv=BN@psxHVt;m3t5{9+M18)xj5e<)t@JwZBFESG@S$l zH_WUxQ4a$$=h>ltrz}*&nB}T5r6VC^gRSaJQKaz^SUKjJ8CeG<NZ1zKvyT)7H07Gb z+kQ^NOm1ZjlYgw%YH%-x&fChvqx`bEtC?5sF(-3=c^?zF{=<qAJ#P3W6t*{oZWlTD zwmCL8ee3ts56Qz4?}BhLhb@ykVJf?W%c}f`t3&X$GN0VK$s!k{hKQ(vea`(e^wwxg z*S&r;J;>NJxI4JWcdvB$Qz@XSHY&E;4oS=x2P|TmQMt%o@Y-6wr7!{5s~_jbv=Q<E z<wGY%1G=G5YAF5w!61)>JTRnq&{Y8^1qNz}`gI}1to5IX4wqw=kXN>ro@O;lgzHVf zJdFsRGPr0lNw(ZtZbmj)He~(!%aJCeIgKIfAG>@t0&#^P4y~?lj7g>U1)5l{`AY(# zL#}FD8er$MuJmZ*VZ9o4qne^Eg?Og8QGO<+wTvIf;6xd(((hfSVid`#fd|q@*wX>H zV9j2OnRApxdQO>zO(X>Y3O?QbIkWM6jRaz-cnV-|iX#7QxbNOLjTJMxd@}ev(E~b> z8_}$&=UC7(U3~d(C2npCl=E<tN*70^V^M&Zo|UALQ{IzwKUaXzgsdaZUIz0EwY#eX zLrs%pF*-|~r@x-s#1x!33AVZ}7?Btrt1D%D{`F>B-dv*8DM6))j~Z=N3aZD0q2tv_ z--$ymiBzh3PICRkTG=?z#z#BROy8`65WC;HwUs5vGdln9mS*t%*bR+*Xd&R{UW`4g zBXXMzs)3P%RCRr=3d*z$VxIjO+_mIIh;?Q)a$<O7`Y6sP3&VbDv;ZKm$V2zOA!sjn zVB=m>LEnjWvTL2|9Jn<6GgG3Kur~5w83^`xtn+X%>D`|Iy9(I<WF*GQ9kswpoE1;l z?~k))+Q9o3%@XrzNORVoG7|IRq7ypFuPrVi3sZc65+^l_ril&)I$oU?o^fFulS~L3 zJ~rm;ibAns6)gRuX#^e79bGEY61uAEkE^WhXoydgk-EQAL>ai+6VP``xNx=jgjxa% zro{!)wSEN6_6D*zkdYSJDl*#5@t0D22JURInXrD}`>t=)0_*LvJAO4(Uzb4|1H!|f z`+m@2jafUNwenlON3u^@2EsV$0lf*fr<;G$ZUn|5SqD}wWPA^IaCu<p7QE~%x-@G{ zO<4@}Mi=sOKl??w!F_iVGM-H#dL(d1SH3p1@k6Y#qkAiWM}qNf65>N7ch8Qj$d_>s zudE#}&(f3y=l|pAEZCyjqA)CtG}1$NgTl}tHI#IBcXx-<UD91ccf-)q-Cas|w}^MV z|6o1)ti8{w?_HTTywUZHm8hnwsLB1XkD*xBGRidxrDVQr_dzhf%yb0s(-bB-RyNhV zKI94~UUa%1ZRf}^g-n@xxhanTlq|A!eoV|I33&9lRcTH*SDLEYDwJh_(qOom5Zt|6 zV)JhH)?TVR1&So-jGz6=ZWK@t=-B6NxS8h**>qQvM{jUE3Kwmp9D=AaP)izAz65R~ zgKJpLH*)fmq5U9hlS5Q?QjE32@v&gLa7(7EzEIMT6CdOVOLhD8Y}*skiH~?((p_NE z&5*J_Bu13i)&t<m=0FA9W{w#6yoZ;YE6I#?H$K9~(aUXCq{?`xpu5iq;i=mDV#g1& zSZp~)OFX<;M&4?PBe=?Gs<xCbplv|ml>5xvyCn2URZrt$`W{f(fKu(6<m?dp84;}T zM?T}LK$}5au8->V^TAa4Ri1$XK1a5JszHh<8ub0rmc&<mQ4Vi-VOal_flw14mi!47 z=peekH=&f3&O(S~t?hANvT2vkbxwq!+>FkcNpL}j%;oIzxiPTu6Xje5bd0AmXSdw; z?<LpA-H+1Kxg4)493Y!`(9%+fl6YF_XhchuIpVpo!DA+n2}_>GyB0y7x@aH_>~4mu z#l@3R>xb`z!P-t%!~R=ywraiCEHQeF<Abw<LCreO*Ll`4xRQ%kv&0txRj4mZQ_PV} z-FMLQ_20f4H-LvQ+fV)K_kw(?7ncv`Ru-z*0BP{}=s5{uW1lLe`xm|en@wa$?bGof zQ!|?KDJo*P@}Tb+1{HGT*?7m?+Lb8@kmLPiOA@cD^kU{ymx)4KbI=k*zm;xlxP4LY zfy0XI<FlR_Bc~O)!ySMo4uu9RsC|$qJ+=-mV;w%ZHK_c>HWjNZn?RXXYd1E4I6+{2 z0(JdGicFhHT2-~j4ek5p<5)+i5KEfGWVnfHa_Y*CxYXH`$=Vp*&p$J|k8hmhTqct~ zg47>BF^pl;l2Je==>myy#?fKj-b@**5o>8c#si?-#4}W~H>!b8LJu7k5g$`Uz%Rp{ z<?3;;UzXL+vP$4SUy9Gi?H#DSQck>()3r!Ia_>i^Juega`)z}VCt%H0B7|$@<k9`~ zkVp(|8;*0`RX!jOL!iJnrmg4uDbT%<4o!pS;QS=MIZ0v;unlzy$_&7q_rwauw4O+H zW=|bm3He?jz)g3wEOYqz{n$H6-oZdz8j#M?;7%}FQP~^`F@}et6-PqzS29PEjS*;( zL{NTGGHNL}Xt&{}wHR+WlqRnsmoBD;4}HzygZH4=0kL14r(c}_Pt3s`=fBxx;P7o9 zk_%~@!<R*HId%CsPF@z(m?252_YV=<Utjfrta?e@9nr&?f{OzO5|4zQ7l5yWiSCuN zKSK;wibJE(l20H_@~Fr5!>n*{9+bM-gPKVy;sN1@&j<}o=nC*ulYUrq#gRzS3&FhB zbN{6C)3JZ9t}aey4|NqJBb!Q)bMl>fazcMB^l}c+Wa2*xNRNJ2c%$&%An(3<`b6&L z<<%dAWog<N6-xiHKU-}paKo=Iw{d6WOI`2TcDpZ$^12yz*yB>owM_hMflm(p)^RW0 z1Z^u*+A_?+eCFq|7>wycd3!Dzlzot?t{5-^Wo<(Qh;WHHq?xe+Etdt>W$Sgru97=~ z+Dj0I6`S?^m@XU0!X!Tq(e2diGEVPu7q*09cO=Zqkbi+*QsEWGrJSL3W&cDkf1}24 zU!e|tsYt9HjlvW`3&vl^wk|2pVK`@#`;}m`p<rcRXKW@bPdir!Bh$2FG*vDdgGC+n z?I_dw9KekhAt<(jpYuV&6bao)Ty&0Qb25wU#46m9Ih*H$>RxpVL8Z}|v@MufxG)3J z((vxj3P4_b6!vpZ0J=@1W@g@>NS><H)uJUX#VY5BFRD{s7~_*qODN4;C|h--vqbB^ zv~e8`JGHo~*@Gs7A_DaKBT*B%o`Pgf-@}nC^CU|!VPjW#M5j6WCpy##fYh<cl;u<} zn^wC}|AHHC(#*T|f5r(V9nU~}vx=tQQH=%EOll9fZj}ZpcyKq~RP2K}8ys+iW&=mz zn4G%X{*`|>KScnoi)O6onCo&?K_?cP0Xs$gY`W#8W{D0;H(l#y)bFAf<`^yfgX+Sn zxqJsC-0I4>rU;r&IMRHqXWI&Tp|(qZ)S&(qVkaONO{ZgMh6TeI-Yjv2;9JDemE)QS z!NG3H=eDMN4dM#z)YD`4xU#H^o-XP@BL!O*TDMIX&I#t4^gR+}NsBtOlt~c1)>}fg z)OEIP6CdX_S^UJRNZDB+L*@2{y$0}k=qZMjAf4y(FE*-&f-*js>0rTV2fEwgVu|VC z&Y+<RBb2^@n?bRdMJw>Zx?9yk`m-vMhUM3*-?|%v&j-Eml~GN9-zo`iiKuD^RHy&A z3A$!s=oYmMCD<<ylr|xaUe%vpo#FOjICUudD=X=`^@#qSH4}MH|5N|A$NyWTlMLBL z_a7M>fw-MBq|VhPS&d>*6OpmKo2);p`x&8i9`Z|PqepPE3auaCDx?GL@vx(D9Bp4q z8<gm|Ig=NZSHgcbVoR|{0Ds!>4`bT{JP7Wg(WIOAP~b~z>WhB6Xv*L3uKcUmltUID z=TkEQs4IP~Y&m)MT|%JEFKjs_CCCDmQ4ue1%%m$-&XSEg*|%TLQYNyn{_^k>tVXN> zer#u0DSTg<WI24Y54S88g@^ADOsY}Zc0DhiKQfpjWhj(IO~%RF;%MDv@L^HNo_tqC zqv@<+9-Fw)mG=T;y+3PYy7R|K%`pm>kP82QgoO*de)#zl>;seGQ2LkgsS`3R>!1uH z5`C7VbTAv#@`B23JnKoOtzr43_Y_+pZPC%-XR1l-3~AWJAxsaZ!mTTkNy%^`&j6i* z7RlZknX~VU%>p~YF!%AKv3S;-{ld!LzvZL)f^oNFwrm3TKVS!vuXhdZ)yuzA4hf1b zvDCFkWJ*EdA8KLxN__>Rhsvmk_oQc-EAVxuEfL{Z$wi?kgLYZXin#k**VxXVgK0!= z#&sWYFm#AHa&wkuzJ%1jEA`Y<cdID<f@)B+yh*TMwM4*lE{&PWo;D~(1|<UQ?&3fH z8`>Ocg{xB1rMC0v$;5J0Ggr_Hvm(-GuPGWf`I0FKCo@9?Se8(mF85k@Ghk53Q51S3 z!9%gE%uSO35YZ0p*fQBCx4rM|F>8bgZ}hv7rUW*kb@-7Tmk7cWt2~rUe*E+9WWF$q z5d2DhX|gMVI%btA;|ctNP&oBB2R2WASeGQ)V2GC#PkHOP?66cism4c<YMdh8_CdPR zAlJ7`m$*6fDf;<nWyP~K5k{k|8s=3$si;b^FI*X9>9C41y+vsUOej}MI?6P8=V?%0 z!rm>1Z}STrTsXYb_UWtQM>l;KVPmM$?IRd)ti-W~Ri_Lx(2$=TK_<^H({X!2qQh{T zrMJg}KxfNl<QNE!4$wCEV}S_xxNHdHMUQof2{}0?Lbjg=YGsNXe$|gxRGv(5`shIo zL3mv{aCub+?nYjALA9ROf$TA_y^k)AXz3To5l$}xvKBje8gZ^UmY=Z8fK8HUJ4eaV zMd`?*r$-rdW<b`wXa8X7)b@fmhKh$m+ao=)WSwToA~w}*X?G9n9TCCoJSB;FIf$UZ zqDcM^XDh>3uBx>cgV2a1ZqCX95`kZ(0v%d6z3DgI@<>hVHPbNkT21sjHA(berr0{j zE;B;WsO&gd$*_!*{HYd%D7QxUkM8?#P7UNkT5WeQdH216zW)dzaC*KWv#LAmzo42{ zeToB8`6~N}wkh!=R_q)iDzQE%y1>dT0u+9RISmQq+;ySPfp_62UfY_-udv!p6kY1& zF-4O1dZ(6b7{ZVtCX+tlbngln1KA<^vg!Ah3myTz5CAxp)FqiT^zF(;o`)BJe88V) zY@LzX_~J+VdHTvlT%O5uId3m9@I>AzanAE6oKHX$1kDmX@x;?0w(GmMIR`~vx4*37 z4uKk#CV6lVHJ|(b<d(E271Iwr{xOxfCFE-f`W(o4Y&MbE?86z^btd=5JY95o$ULs3 z(s@Q+CN6zXQgWc8@YlT0FHf5*r!%Xm;fXbroCM7C;Xlatey=lj72d(4DV&(egkBRe z<%RZgP|jO8F26dGdlLGlyx?sQ*9{S#KAowtW|N97a9l8LSA;el!aiNP^Jj)}^(q59 zf4#<81T6thzU+6Tgst;3@!aouhDG(9b3vIMotl8~0mQPiP<-mjK#DDe_gV$q`4mm0 z3+KtEm_LE&^hXXnm`%(xCf|OYo~Z<vY!l5uXwK-m=0<)2qZ$2{x$|DP72aRppcL<w zU|Hw+cduo_;gjT$L{b-8ulK9{<CS!w+|pb>4y;W|_cVPbZ`+cuYXc4xT0gX#MK~xL zj{a2C%*X?fnvfha7U3$@ev3$<AHV`odrbd*P*Z%*MM=hP5+s8bc?$cSYnDSoY}J5B z!L=P*64r^8QEgi>**s6^O(CPU255#cZyV5&d!vfTiQJu)<B<S}Z4jE$dMF*b;9B35 z^cPxo*-QKlQeyxJ&n@8nde(Ziw?@u@pt{u;e@36>T-bH<a`@$955OnpThPLb#GaPn ziOxrY0jd7ew>U0M{E*rQ1shEe6}RWrmuF)AMEYHhikl?N?Zk~wsE~wPAq1N{9J?o1 zUV~}joyx^CQ@=WeWySCoZwR*%DSEda-EWqhjAsKEfy*Gc6(zoRH@%>}E5{QJ+Lw-> z>vA16ty(K2S+LO`FOsb$NTe$vJLe(8cH4az{T=?-G<Lhq)a8{)>0@jh_rfm4{;Eu2 zvvvQ?z=d3bNnd$KY;emsC;1Nx{C;`SmB6%$*>|uTeY{O%<SQ81A@z1?O!G*V)Sm;$ zyt{7NY`w@Vbp;W{Gh<A4kMir!Z=s+PQu-MuHt{vQNqc1h#*4ew98{Htic`YJ4~iuk zW$1)1pyY}yDL<^uFdlSr+LI6C1)fs^DJLVvvelaJsmV*=+MdsgBYz7&{Y^c!{JXI- zZnGPvOeEy{LcFU|=Ds$N<ovlS`{u3)Y)&*7DGIiqLSt`-(=A#-$LiBx#iijPGq1ny zJ!Kwv(u$W{vZ=$djw`JG`F*|l)*6>ir5^Gg{>@H~YvrdBQm<ut>(nluZBlj@<CHmX z=`-RIv%IP}`XS){Q_Q^ky}Luk_kcVWIB}IfqC6;|qVxqRP~SxqcE<!?EgSm0T{#;l zEqsAag|&(bW5rTW?ULGKfU0SGxEX`rY_`I9IX7f};p)==k_#J01c1FON5!^v(+<)5 z@S}99&A3|S?WeQRJE6B&`3SG`#c1?HuHoB($Tt&3mh9j!nHF%!0$WD(TNRlp+A-6L zDMCZj&R_1^*}iAQW|JyQl#3`?KJvL^+gWT8{{EGG;sYkU&olNY#KD*E1JqGLf-WYO zcK$BGzCx?NFFKWHe!q(QD|~dY9R!^B<^Q-kp7S9hYo`r)^F55Q`R=?sN3KN1vT~sI zNLD|c4j=#@l5ykOb3o`k+}3B_%fLz2;gH^LVB@;e^PoqJoOboxJ5IB3tzhf#4nh+J z2Z=Hp(Jw6C3anW4uP0d=U_A6WQ)oz`Wxm0edY93k&UrBR4_>q*1f(7KwuFg=O-boD zq<2#S*+AzHcI#jh!wcdUxF*UtU$dYS1s}6y(#+X9ZQ{CrGe)XqjNjlAaJip5iM{oA zk(AvF6=qY)>nAcaifT)5V{<+zmG{R$hCqPNqE+#3izV;k*^fbpf%xcOlVDs(rZz%l zzV3ZbWULZ)kvaQ_#EGX<%}Sh}8H4lzm9a1zawrA@)~XVS+;QqL_;1temjWhNMgcjy zCmY0;U~EoK`!$h@O!DEwn(szh=)X959{T&skWQVL)Jk|I;Ll-JdebAC%z1rdAtK+U zIX|@wvP>&zX+N3sB|^-m;>#L{YjoM!$+_Q&P1=`*H)bLGF)tv#vsTZ4{`eBS)N#mY z>e2Ail47R8qwode^bj)(BYP+u4i*8M4<O<M3naZzh>Ap{6q{gG3h#q;v$oT5VDn4d zR+;}Ggnx@%jVCqyz9U{)h0=h$NI}%^Vn;G(Fwo~?#>2sxQeu$21D5x0K9<$`pufWL zTsG4Qh;$p7J`$KuUX7paDWHb(AvR*X1ZHvo3%i=M?)Jt+zSUVF^VvF7Cofom?7BrG zkH$m}RzQAkRLtq*WaG3Qx1of@$^hSb{#ms7T8peZwk$l-NIcDM!d1C&D$XeAk7(OF z+DJd=8{u7S0ol}=K>4}-_FE*?wLv}3KO22*ctPmc+}NRfDZy6#L45N+w<tl=Z0aSC z&}{Qa4nGh-h=GEP*gXs|VEbJ<_zyO1a%LO4M+pBnFP88$@@TJk8cTUCut6%lhr|Pa zpBoXad+FzrjxBDSyHAKEEvPO97gRT9Rk0;_ngf|NM;R6yLnDa>&W%&VJ-h^=Pos_d z2>}jxkG>UB$}74hLD=-*ldy=vcM$i*RM;w}xdwW~W<D_a`>5X15wPT(r6{Nmv*aAK z4IQ|Ctbe*;%C0}m_`5|?d{8frx<O!$O7-H_CECd^cVSnNY=JU^JZt2a%MoY8Nm+-? z$1qU&@QkAOHch*+;zmD)@am2-9nIeTdKMXA$~FfsUA^&Q2zVIVI7KR(p3T^zBYM#( zSSlUKu%ZeT`H~oh!OOigi5Rq(giwi+$SsNRy#Yss{|WO11ZTu#K&e+WPwFwPDF0~) zHCC`Cs!5&HWD?UU(8mfsvzUmlB;u&-*P+AW?`p$Up|5uzP2FOmMC_nKUE2@O!Cz^t zxium{hEt5ui389&dQMy_8;$&DD?AT6{lq^ajZb!>3J*$o<8~*FimPXAC;e+j-%cCw zq&~K?k^y;vUccy31d$q!R;y<7vzPvsZzJ1AeOFN%H_+-ZNTyHCM=Wi#Dv~B1i~tso z4A;5KEmO!Uet4-#)P66<yVrF&j-{kIN_{ZljRiP2VM$Ju)_nk|QP6w3(d{3jKHw!D zEGM1NlRxGCPFX13y^dS{iwAT2#5&o$#!wYoc2C*hEuxyXG`jgcie@|4!3z?Jvy$xP z5~ErWEXa-vj;JyAI4O{)|2q~aR*1mb`2PA0zr&$88j`cSYG@WwGy142{Pn>lN~8$& zet@oChNC)fUa|m=pNof+?KH`4%TS$ZzTnP|e#X0;HfP=rR6Tt~3Wb>(a!nsQIJ+0( zg-3+BQLly1G+6h!;(Oi)z|o8FjYHdz;ty+odhRbjPkX-^#E$x8;U(fvU8^k>k6MZJ zPlOH5;fUZqH8)s1@csH-omXUgMCQ)7o?CxS+4Np!GZZj!qZTaohOy{YGxc)RC|Fr? z;^bkLz~VUosj6bW`*8BLTIrM%Ff{_BpT1!Fn%@DOn`P@_D3g`7BWrW(wk<eINk-#g zG<X<RJP$b5`u?ce6I22d!6gpE-FW9|Y5SVgvA{OBklt7iEs>>eSFQy1<7!(EQpWNT z44>@<zQN0jEA)SAm`;Rm^!dGb2_1Vb*{s;PRgy5%F5zXK$26;d-`AdYY~lU#m}IM? zA%P{4qt_myo)g9&8aW-X&<%%8H>}Ge4hJf)3HU=qOC+WH5~ePZT4}_k5G($%2+Wos zNLBH45C{YxqZGq90;Lz->YdBDUmp#t8isk~mA-%}aA$+sG9pEX^Kbt2j|!|*Keo^s zssuckx$UFYJF(w+Yd#FTE*z1rR-dSTI85n;C?ydi^J{X<yl8z_$(_A$$fgD;>`L=k zst|;F8MK}7Z>F;_FT5cCK}uYVxW?H;!?Uf%H3Nn`X!^<>flpEJ#I$xxHZQ^TSMM$i zw_1L_UFMb7kNhag$473$afU?~Z1wdM>lA({FRX82v%iuS%JS&7yl)Y2Kv(HJSD+`8 zowL-G+|~kL+kHEk)0x$FYs*#5&HH<O-*)=%(nw$I{c3iIixh)tV>_GbP)kc4_@Y@R z;|U-~w+O`mi`EEl{<{D4M3O<W{e-zZ{s`?G#Ioi1l3SD>QDp^E1RGbswzi>_lW5zj zW_&LDVExS-3~U*+Z;-T9;ZB{R+;%LWY$OU`3|hg$*m-KL8sT4qPh4W$b=}VA=chyA zDn41(oVtqT_8N5#w{6VIx-CXhTV9ROAx~J?U$viZ+Dm2;J_Rl*(q)YP_~;UOg2(0% zjx7Z)@vuIVYFwaH@hC;NV*&<Smm5C)wrE)sKmT1SMO~ljS3lcqN0XMNBo#ZY+sGud zk0RiCnG-)%cA+L^(>h|~V;iaypTrUb`Fo(yurnjny?MKxXEfn20g}h~*j)5D@xgL_ zF^FWa2#m`J*QKS#v|a5L=gA*yZM}Ak(Gc3>cByw~w&|7y7qHU;q?SVebZPayR!utf zaf6~DZ$p%H^QZ}s9gY5&QR#Y^!mV5hizW0?rqt@Lr1fO7M&AE{xBB2~wKQBG8=INv zn5&q3*U9yHyWpP_Xk0QKD&3Fd`~7&hMh@dsfc^A-(I9Vt)Ybe~0y=biK}3E$)#^8` zDS58uz1|>WekWp<-z<zEo!0I3)T!XmG3&Zd{WWL%j~h^Q7~!Hi#)q;~aEODbo3{rO zfRu|jO@A}CV+;cPOM;DOJ%U23i*PRhjT!gdV}xrVQz*@3Lledj-)4cnASf?I<a2i- z9g-brW^Y6Kg4EL5a>tpUCE$?;+K1;RD>z)EV8iDf?TD2)i$b?~qM38T*|}ehdU@`3 z=lEW7s?z9gZTmr+XRWPu`%!<FF0sL7)b()L<QyP-Re81`IUFBX?UzbqX{jDOQZH(o z!@t9K_H&KFQK=`7&sn!<$+7ArB(i|`;!U|p;qNDR*Z-Ba8(D=O#%`}WxAUY#fv_st z@0~I~{Q4b;OGrpRIKn4?tc5i_%6Ksfvx+*$UN(?Ra2YIP?_>K-poitatX!Y?&bx~e zqM!(Bf+jOZ(jhkLIeI@VHNma%TwEko1=Bu1AaQmIb|=fwa~Lo~lWyJK=p$Ajx{k)! zs-94cO(m3K9fTQsKSlgoVAblIm3H|rz@jbs4`dQN>)h~(sz4pQXg(}k^l-ZG+%?Q~ znZkPz-=Q^$q!m!Y$2|eX%+o!s^RW$Yb2H?`yYHt{wR%*sPRr6j);h|a3ZkKt!>N+b z&;ov)6LZ<-@e4-CsLAh!9msK+G?bO2mrEtTh2Sb+lL&JwF;6+)hnyWqA{=^1Imw&P z!fQ}e>1xB;g@Er2zB1b^gThziqar3hAxDVjFnoxKVj4C$=E0g!LbA#U>jf@-#!3?d zb4lz$>3v*_v(;G&6x*#RRZ6FyT6iCQAZ+MI7T#2uxKSfYVC4o%8+<ya-wUEYB;mxj zOZTr;f!~Zsu<BvA!qEn&JwVCkTn!Gmv4~;RWpmuEcc^o|RZ@b?Md<J%t=wFZvYlZh zjl#=1trsRGJ^#-12M=4!-i7Ir8G#~6B^r8B1ZLiP{=Nb^<y@UFQ&sO)fn<#`zbXaj z7p56-Bd4+dk6^75Qf@e8{^P}rY*<d6yEQ)PI9>Yz_NGe@rkA7n%B&WWL<5mTW5sH0 z`Etq9Y93Zn+%OV1SGCxp5jMxai4EtpbwD#&-#}X(!O+pskd}l{t&1(mOy6^4w5hP5 zoW9u7RNHI1ON19{@Y!?n97`L~lr2<C7^P>VM7+!I5XyJvJ>?x*eRk%rmEiHS>fmcI zGJ!Ss0ZYO#J5Q(Ny*=^qDWk{58Z*Ann@yDA@oz~u{aDpQV&uZNT$7|whK`$+l;+9S z3qrm&jjl_N3!h_Gb?OwG7_~?ip}qvi1|1EuZ^@<0f0F4L$%?A7P(f?|Yc^-0Uz>4# z%?G=LnB~J_g{f+29(>T|uIM&6iN1t4SZyMN*BM<;695mvs%gya$9%ev9=#RYw_=d2 z<%_)^zWr=nwB!mcD^aBNoRuC2;}osP1J4z-$A!}!iFQ%>=;DW4zn_{U?Fd^;O>aG} zWHircuZ)WjMxcvv4I)xD#bs!JV1xwt{_!~5@|D}?LoQs6DZHLf|7D3XDSU`o89&&b zn9^^mACFP3o`_#35(R}kd1I|{R;R5;=wKSnK_BjLk8{)H!Afe=rz`akC6tr7F*U(O z#7Bj;iB+k9Nxk;{7i~&HMb<<C-8;451#Vb4yIq*q_n2oNOUojuhl2Q)B|w!YKGc>` zyxQYC7HK_eG*c+S>Vw-ZJ1tMT_)8Bz=G{3!Zoh3RBK~%lXeKvXle)oJ<%r~;ezec| z{1XT;we3Pw7o@)(i>)%@hpN7WzOm&X`%vze6RUr?cSS|BrY{!(8038Z{pzoy*D0<j zbe%m~%fc%*(*?yygf4@?*LuWe#PJF^EM{YLX+he^2IJk)b7&uk1eeYD#A<sSR%mK* zF74T*FbAjm&y#Z|Z-9x?s^3n!H61Us)j^`eR<T8-zl*WDS~Bv-?_Ta;W^|C(K;Um~ zkFN{xcnotCGoRnw0s|gyQEz-v{>@6co4~7ANCwXgnJ#bD04301v8>X$qDceNKmZ1$ zc}BC@7aiB(OT1KKbQL%1a8(JP)h|+DB1NA7rqA4BdY%H7mW`|W1AI*+Z!rhli}n4q zOD2QLmo{|;nnsz;fuEwFBc5W_(ME~Ne6rzpVrlfM3x*Qayx(}IW)e7r9@FrTUwqXW zX9Ou%datgKi-YEW5wQRD__b-MdAP+(Ewnsg2R}eHt%#|jsYBm8MTT*xk8f3pop&gD zKXXd3XEAE0;V3;lb%tJ*FgEtcyE_c!*TjK0HCKZ^x}Rv}P8Z(0EqPcHUGSFYA!WUs zQFZ0sB$G-G?4WAx%OvC=-yTPleCpw5^|UeE0B801d1~i}3clPs&i;>PINnnWR@*II znt96dK;D?F*JW3w^Gb;ZqEUN9x6#j~R#_J$#lpwLMvWY`<d;(<4ay0F7ZG#Natay( z7Oo{B7uV)09cQ1`{w@`xHZH&vo~G3FH{CmXc639QuTDL84K){UZ9;X@W+ttZo-XF} zUF}n&3sik1_A{1Vey!^Z=}4QwVFT4OZ;97E=0_m%$$_iUDaU^nDCZWZ(B7a%S+Oc` zQ=YNm9T%;t_=7V&V8S~5|AF`0BIumfq{>;O&rVnEnRfIJ_{xWK-Md!v)3|S{^8}JT zDO_iKHf*vO4Z1iUUovZDZ6!Ke1TS2e7knZDj&5)r!9>^RDNnZEi`I4f&vv4vhg@Ss zInu-cK*9fr7#8OT5qcKELa-f>P;0umO7QQGCz&ZUTME9~#C`?d`^1fEVLwxw)j%HO z7Xfa_lKwx!i6($An+n2uymVOi&x~Aa{=gL-2FD`nYcQToi)1w_TKmhdA5Ro+r<3Q) zZzDeC{uQR3so1o%tFg)Kc>!<TEyhN>FAv!SUl!8A7)cGYMij%_W-ymBKr|=>3mGUm zAJ-Znkb6mmujR+>%ptKh>c%9l)fDFf+u%mR`-6SChG-J?zVCF&i9pfw#`Q??>ufX- zyFhrM+)nmqaEsp$b*@&*lO?_Wp?KZIlHSe$6_Ze%@b~--^vOtW?c=vF9$zc9u;`^Z zo&441;pbz3qrIDh0(Y~+mp1XMkb7ktBq(CF9F>I!kj{Dq$MZ&qs{7>;ZT^HRNF!gw z79kG~?5=`allF^Axa`*Occ7C2!!jDCBkj@D#mb@63ax!LJ79ueJ?#KfKVHs2IVSQZ z)UJspP(A16rKZ|6I1JB*bl@_7A$*Ip*11mC-5M(qeF&48K*H;wDV>SxeAFfTF!EyR zQP@w`7i}*0TymkTmk2EL)W2y+&e?*E)p6R)w3KkM&|WVK!bP8D<z4ioR%apj%GiCJ zJbE20__vw7_wW*0xj-@p0p-oa{V+Vwe2#%O_~jI@Iv@S@b?A%K<i(dwr~XpPYmi8f zb1$8@niB)G{M6DI4SWT}DuPFNI1kPDVf5{cF?4FjA%UlTCJQ05_b6|91k#>t@9Rr; zPYsz>F=9{>`J(zRYIX&uc~hRp!r_k_nH~X_(PtQgGK%0I7K67w9Q89qCicrudpaj5 zp}g{Po@0-+>tFXLFFw=v9oVSYd03#6-t=1?izt>InFp0Ecx3DwO&$y3MX-5am=s5R za_V+ERINBw?x87ctyS*(>C6J%a1!lHkn!Ec%X{OQyh+FTsSlBP&MkjlP(JuuY?*t6 zdN)V4l?QW<NR+fXimGbc*vKd=hkA#5k^_{G=qpDy+f;k8bOhzCCCkPbx@Ne3c(d7| ziMR@&eah@Lk7+-AP>VN6YLrEVjh2YAiqYCw?aXH7{|S%qTlJ*~<Wn4-GwTeFtwDg@ zkX(jHhq+l%(!Q^5Hj;<;kd}~|AMm}#d$or)VyClIGNO`8fv0hP3Y2u!hB|Lr1xqlm zJ4!YBdg>i13O}Qz+g+K4^=n!6%vsWO*!kRlHii!DO126z4eH=0Xy|*@GWFnJZi=R_ zg03T%r}(tN$~Ac?T_3GAP6wnuy(8OHmnboUM9M^d!?ot<n)96<bgL~LSfcXC_(&S1 z9X-^OTr~1vo0d_+7@g-t+^GZuFH3iAZ*$M}YNv<QH~j-NG4si(D>(SqZ=xX_>I?aQ z=7s68@MqTXpKjd+rW_*+zFpT3{8-c*fVJ?XD;A`jX($nzm3X;5O)~?cw<$oXgb(d1 zj>-{@fruS*U{j=aX5dj2R3wNjq2pMp*#KIe*|aIL-GmG9EXi4gQ88=fTzm&B!}Ujk zYN{`{ze1uGn|3+!?}oD_<%QQ*eOog6#c1ME(cYIbycom3`SrU;KSee*G_r77jILI0 zK0;D<3$|+MP@0Fy{Us$A=Dta9`jU4xv&@KfKlCQujV$*_SRXGyUwIsKUUaz})xrY% zwAlPc3Zc&I#QuQ^dNsFoJNN3{j^W0B#!>)bkAq8FyQ`<l8DS{fU5Ojxv_ci8z{A<* zu;Awom)0|iw}+n_-4vjepophfpBVDKA^&^GkV1Y&IE!S&(KD9>DRbd<rGewRoDu~c zBMBI<T(;>VBJ*b_-RCM&?bn`{iqwBU=(#9h&O5y{`@+DHJBZhmMY&OejhDxCE@yFA zU=d_HRzusSj{47rRf3uv`m5M}H0pv>Z@;Wx)`#fzAnT&QY@znw#fMOMrL}JQrgu<m zuQBCHT$Uo<wINR;h7bVH&eU{!GwgDw0cn8f>jHCq8j)d@(?QJlaEQ5kCy3`xkbO_` z$1Z2$?`-`K)=S2o&-Kr-7CQiI_Qum<PO5#r`q#Go1M5v(?U-L^Kb8gmSgYnC6yk|} z@F-Lb;H|FWppW@p<J5dEK~v7nDm%u>_$AHx4mW+}ABpee-TxyT@;L?F#oOrWNnhZN z<Y%Ts$F%JP6Si9D+Be0Qh^Yz(Ro<6~)OFoGPwD#}p2qR0dIE-tYdj}h`S}0Nb^;Tv z1jJwM=nE^*J>jv>T%I^jCfxEQdQ#as+3b$$vm&z@hV`vNbwuGk2$II&{Ax28Phcx2 z-|HG%k~;4367}-+DA-@^Z|+&Gsm2SXRRmJVfPb~DVcG16@5(8KBcsm$p*jRfxm%a5 z#Y-FqV&8#pzOfOD9!jJ_gCv^er5blkP+Jb7z2YGQ=BIvUX>zfRC+h(-R4hJy@d)qI zJ`_b-jn}YmY5jTiL>0fWo8H^_%XRMG4j*$RUXVaj(?L_HZAY8M+LP>^XH#sT$CWEl zcR>e1a^>uA_+{uuqXoNAeQ&g+<XmJ0*r$~>i>%P&XUusKMlhA77BV3#ZUeEs<2DeG zo{Ee%7nDE?37f8NVy$-z-9O44;Z{-}0T#BBn{?w`dSdTaf(DD|2hwm<TUn;OEeEzg zFD@Jnw8a*>L*bby6r=h&pn^EJN+mC-<Zo7AEv^HD3Y~lbNFVW`o^t`QTH;MP;ll4K zke(5pM>v4zli1@=E693GftWspJ|Il9u1>haQc;u47U0tk%9n;-U9)o?V$!hG2hmx- zlX65!Co_&A{*<l9qLryJ5KOk_$`?2LXJuo+kBw0Ahy@;rwKh)K)K2Y)ju{XC1349X z+JPDK>ylEo{Bsd>#6K3=SdAV5R1(h@&8YRuqTu3cS#h_EA*oBN_|>|A<T1tOT75Q+ z5+XX{HZ>`oq8NQf*A<P6Yu)Tlo8T{tCo2oEc>l__WJb`Yir(IYjeBV~`MtwJa4*@= ztVCYN3f`v7E1USS@qN^<+LfspHtOgrS?cgnoZ1ZSMo~d&X8yAfRdT+qQI=?AhKcCg z;IACGd7Ri>0#tMPrJAH8tBDZJJl1x$8s_lf--UBaCFU^Pf>B(YEvNG+&DnhpnwsEk zR@*=tm`GBSas^avvUR91@%_+KdsENjKL+0);>trGs?7}U?-n-K_3{x-9`wXe@}BQ) zNw@{0cJ>sDGq--SQUA`C)AOe;Wjdq(!E&~w1#^YH`q}jIKy-Ie+j2y@vPA(K$QAWk z{X+h6Glxc%<~6<bRa%m8G)!5$nF>jc`^l*VKdYAx&pDJvu5m*pW*4gZNDOSADozq~ z=??ZEhB7Se%~h8;G|Jo)LDRr`({`8RPUXaat+S0TPlHwS<o?~U59<ATihiNI3X!=! zJMD5}C(!>OO<bN0Pi9yIDZd&eVxGUxkEchH3sP_YGfx!XO?07U{A@|b^Ka$=1D<+u zunB}uqgoe=|Nk1yrjOJ@Ji+L?qZ{hgvCo5i1+erp{(n10f$tBW`w~(v&#h*4bPG{n zhq{^@Co_-%`j4UgPz0wh_iKbrWN-t78*TuFiRZ1sTlX3d9eSfU5-ubeQ^9=W4KA=x zy;g$Y+9X4R)M>xpJRw*y3S3W9t#2loSqyqrqk}?ymoh9LhHDLcHvK>ff$-6TT>CJ# zH2dZKlFKX-Gs!nJosLf#>WLzhEVBzUP8(lTuL>~HOMMfeVq0#Uy#f5g+!hLmZlmD- zEBB(4?X~fQEq9jm<s!+{11AT2-95maF+11il`rG_1b;s#AVoFNT@tEcWK<e+5`d;! zc*i|qIHiBdRHxxUheowtF4i4|`&6@CtF2vPCsRs=qXCa|jku_=C?>;8$qf;*%RU$a zZPE_a&F$~p?KHsdWXuaL6y8Vt0<+bSru=t6GWzXdcVj!7U$J9%9#gAs-;Km+9NkWf z8Y5in9s1eeW^2I7mP<qhSl`Ga%kmBvv)IVl%yE+Y)PjE`m{dEni&iNY#P@~t9#&UD zayc#Yt9aKaD=#xiuN)#xp$p+;FGvn8XVt<oIwq;&{uM!<dj%o62VPJsjCc!dt96H3 zUa*y^26UAEOc&Remy6V$6QE9DV^aoR&Y&Iot?i!ul$;`KQ_I-uF*dWU;ISp4n*~NR zHO)3Hy|goA@mS)ghAMLPwo#Q*9^MTu6;f_&O-4lblq-Y00<}cWOzJXO;I^RinLQTv zf-KG~#7{%rc`M_hsvDrahKij14C<KT3cQxa&+9aw_-ANM*GW?dFlpTLRQiznxMefj z)AjtGGQ9iTSdMxZU=mY3B+C@QfgTV^BEFS^DV0D9l*ZlAYwC(2{Gt8)W9<`InJfUd zP$rcui)ga5%Ww_Bbh>t9LKPhDVHqQ~L<U_nt=LmQh1yUlfWv2L;p4}4zkEIRlNN6Z z%^jXOy~M}{>}GE1FW!X$CB!*eW#UFPu5wV!TU)2A4T}<S?^Y2PD-l8vll>T{4A?l` zcS(o;y(zmYQt$6L=7DsqXdJwS3b%Byd~CHW=l|_g5=ZBW70PX>UjpjzM|8|3Y&IRq zj<$(9g1_O}*eCFUAhM0`Q)1C~f{}Z&4V=9lm8?_OL<r=Q<WUp_rK}y<8B<=Gk=Al; zlqADh+~F1L6K-dHtn2-kw{d${xEc4YPv<5?qlnAPaBt})++rs${fukn4Yf7u=VE9E zgfWYRI>(Ug+;n?PRP%_g6}|jayhYOR$@G&ktyg%%eUQUHEPlGJ{*itwSRK)cFx55g z?lO&QycVS}ySZ4@$kML{mk$s|NQ823sr*;vL{(wW#N2vQi}V}y>WuZRE1xvH_&4k~ z@}Mhan%gErcI$tr)=_#X^4AO*&Xfpp;$)k)WO*N7D?1zTx0o(JjmuI6nLwRDIp}fD z7~4KiheVsi|M15ts@XAvT%vOwb~75hiFAezOM{Z|dv|m!f!WM33FF_n<5KY{ggry) zz6ue*SNWtpRC+)8od!zhKTtlatJq8mqa*J)uDe}CvgHPD5O!kb>p{zAMkdnt5<tE{ zb9Iwt?;qc2(rYB~1qAnR&dbh2d8HVM!14JK!F9`a-VF*!SZpG>eq&BS>SBHgBrB{l zby2GzHPGmna?l8#JIrS9z11Njd|HHAP8cr^=0hE?b5=+s9mR@4=3mj8avUJZ6<T7> zps%Nfepm^N9GNtZ3|u;Ig4s1pgO;Bg@z8Pe%D5^aPOG@l8h^Q9?+eF%7*u22WPqGF z%ca`^T`GZlEsw~3pYg$-hxVCmT65daKa77OZfpx~YzVPs&Kq)gb5}`~!)MMgr2zw_ z=CCV%eH*%!nzVyOV{rBuF@4p`EJu`m)GRc_vcN>ezBd|r`4kiSg(`Y5JnEM_^<3gt zJ>-Mm3+YaKwtbR9JE(C_kbiTrWAELtKMmqZz`^vU`>0Y&&AM5G*C>LIbc#7XCjrZ; zdOgB)ScHN`zCq6d3F7eOC%4wH)ZN(%!gZPSAmY7n14it1(m)qn%$hiI*Y3`P!FZ(u zx@5ap)0ramQtC;!lC9+(t_YBoaX)fh!S=cU*4>?W<;WO&Hrp<uER6WQO-CPyC(*(H zYun<M@Mubia$zH#S>@%)jB<21-rFoxR1{pPUsT8GcJptG+Zq&5FTlH$TjZZGL>ZeP z5|Te}olV*SqKPGWGD*?YCyLn-txyHC9uDpbh&+Gfho4QO#<C?8r6p@r20M6JnWCGP zt`P|#@Z-q`i|BgQej$Im(dUrnNgG@Sd&NzkXZ{T^sMW^N!#0_YhQ7A7S_5eOP~Mvr zEyTihnI%=sxST^rqm1Z#@(@f;%Wguv3}|krgHB>#z`5jj?-3dG^S)scFtK$Keqe17 zin4}e+Yf`_7HT5dar@cfw=Dr10wJS_y4+v=A)6R-Nmc+V>vPcj%-vNqv7<~PVtq@% zW(lyzz$4vP2b{^71<OhQ=1y>#rK^TDnuq66sL5io1bb|=EG@bG5xBNgqs@ZQ*XeJK z(ORx3{+)lBpH#kI#%-ikkYSjt_xb%{p8utsD3!cQ;Sl&K)i-t)L3q<M8`%2i$1A3d zL)PyY9Z^m(af*r0P>Ea;;YJ;0SDPLEVwD}>=M*en$eaKBwA+gqHQiGRNXu<#7gxPB ziTv7Zty|bdPWMeoHFcBLO(Asgh0lP>v({QfCQQKIm-+TEpDYZi`7n}9rQh-OIB`5K zdJ#Z0Gj>%`-T}HY*|xow{bclQU<xL&NHA>YN<)dDFjSjLBw-u7VooBG$G12^q`K<F zq69->UvfKmx+KjNjR{JdH!`)zSvo@7AGULY((#k9_vs>C@w5Jsy5Hdl#3@M5|Eq|r zFOm#9A-~R)`+H4<LZ)p&BER%VvVxSxJAZz?PkGbKvnmpW$+aUNOh2RwJ>ky?Udcd& zMB`eX`S!Yc>5B2h4FsO<bRGL_W_+^IhB>ULbR~F*#=OGjC{w>HvUOuCn{C!&v3JTN zkq54?xtdXp#=$X8Gm}E=G=m8^c}ngMh2BO-dxreqg4~&MU7q5FZvQTS3EudUsDV@Y z^OfaOYI(rvL)yu;>Jil>;q%-S$|j__YihO$ZZogiPcs5oOX8_t{`q@{(maM<>6D`t ziw~B5rP|PR6ULs#H%NaH6{N*c#thTWvTX1>dbnV$QsV<jhIGU3k=Ynd|5EsdgtLk| zm_(Vy@5a}O?_7ErUnLwm@S*6^ljR0HfmIG!1Tkl46JdWEqgmKNbA^G5G!9_E0_s%g zv+XUziqCMHu?TIaKD9%J{gvLO<VlD%)QcX?!Ni#c?<Tpaqb{~k5n{~7#VE2L#}mCQ znr)NB5)`4@v^yPNA=cDFW%u1y+j6cM>1dde3}uE8WqK)zXL?mK$3f95AM=Y>!VsL} zlVg{6u;*!cEF+iGpM{KHY*C@2kPPDAvqWQw(BI4<S|N;lKF%%u<(u}rd6`T<)?<|k z3YX)hK}UXPHz^FE1o9TrM{2HPUXX!tGnQ|$wD-O?MNJpG_g5OE&zLGebc;b*wb}@I z)eOEV?rWZ%*kIso8CG!-BU&-R2oG(Ivn1-qZH>6}a=99pcg`&cv^<u}thy|jMIPZO zz`0-|6Rx1?bc11#<7>JIu%@;FG~vUMlF|J6w<KcfdAwfV&xLXi>5q1Hrs%aj>?arK z#))x>C&trivC7EN&Qbu7Fs~Fh316qk`aJVs$GiQln?EVN)VO9;#1mu?zA0f2Q0dfk z!5a_Gy+NawZi~C^d@`jo8bfO|2@fK48BY#R?%3w&_Hq)4c{cAC-$ANB{*hJjWy9A# za%0t|Pr2<US0*m%Xw?&O9GyHDvd!|D8eB9j0-8L3R3p4)oV<St<>*FB(ygHRGNWZ} z6oFR|Zaf10s?b@j*$Eo(*F%mXcrk>&P?_>{&O1mZD&3~eGQdXonVaTV4t||P2=6;^ z=Fe<+kA!!<TkYGoCl7tk321=Kfu7MCiw4kT=xaInl2<%JF>$iM`}3n^9{s?`4Sb|X zg8N5w<wV1Y3_W~@7>o90UR|?udX-En2)8YXK57ZTD+WXRt6((kdv|Zq@-66%#Z4j# z&C&A<)1y;ic@;TJp~|FFtU{2SS3|ftm6}84(y7l}QREB6P^xc>BZ|-8d20%+eIIzh zd+rZUVdM_Ci7f-g2kM%Nkz}9fe0s4nSCrtpO}VKqzhfnSO1}B_8GsWSr}J-j)v%uk zaw7-M4>U;Cu#Gs=j;K1JE9Ur`qNHW2phsbZwC>swfYM~@c;g?<*YotW8X<bHFi2I~ z-(<B7%d@=sFv57n_=ExGuvvi{%j(eU`}Th1r8oi?))9oT5wrlyp)G$TVs`#7SjQIl zOoOile$XL^0<aAa1Sj6>Vu+SCGtc!-5)#KHc%ZxPA|pX68K6L#MR#whc|TL#`-=ol z4{(}lt{3J-yWic){|);mJ_5HdY30HUyVp_Ef4C^uruP4Mqx8{z<Q*nVVU8I2Ydo!= zEme*PT^pqC6y7pu*l$yT9v55I{L@#oocaUdxSId%E3ErT{gZy|{t8?=6d)tT$4KR1 zpN|72*0M>4XTL9e6>0{#*-QHM6Uav#O3={EdTVCI;#x$jS(~dHD<giFR1$)AOqzwL zn^MSyfBT!SsjhoxxVoLTk3EI7M2dIv)Ee;T*|O@9iOlfENn4|cQlh>+i@2%DBSW!X zMRprm-MkM1oXOP2ZuZbRL?vBL0WN6S?mTm_0pK2+*_!`C%DkX6leOM(k|LW!T*?6z z?r<oKC0njcd<3DRSxnbtnn-`JCJvFdl?rj%wlRr9p~14O^k9$$p^7hjh6G+jfX(ks z=JU_A{^{po>;ZGwj1Ae`gjO0(8xrn9X5qy4-+Lt`10>Uf<)`7v(VX$aSIqe7LyZJ< zK;iC39S3}FQxtd*y$%nk=EWZRm^R4qU5M3ODZz2y6G3m#5)@0jP(B=lZ%`BWJ(N+g zH{+IL9~r{$PK6%hVBZm4FQ!jbC#03n{j@VhKV}86*}hTmMudVlzYb*Z3$fJ*Bpo7} za{6<LX5t#(b*;)%%oudOu1m>M2_eIXGurFD5Uv`dSCaL3a0#nmdJ)9a9-*B_v=$A{ z{T`444|>0(p72yDMdx$2nv;@2rrg|Js#Y()?KAioaRpu|kU{~)*sL!X>%uxyi>Ath zZgAQ>G~KFwUg<V7h!u#iKup1#`&Woy*3Yx%w&-wKIiY#=se-|>e7}Uk8TVv&r|Qc| zhj-4fiLik~d|4)p9f3#@G7EL0RVq`x!gJO$9-Tcg0e$f``i-38thPjGW|{`0IS7mD z(4$E(8=f6Sgl+%5cg+dVo&O@*rJmtJHEIK!&pm11h(%t~*ff9{fzTWTC4_DTFi6X^ z*HQHfTSWSn-qf_i#E>N7@6=j6sWV#4p0A>S0Iw@iKVr*|=eso-SdN5yMEJfXAM$%% zmsLO%70BBbx{^!JHq2_gcAvPp;WD@6&<84>1m)SBTZE@EW<?Slq0&0PFP%?xCUtiH z%g`;lzncp5s1%)9Tg#_uzMt{(<IyId)>_oL+v-Ff60(XocTU+*fpeP3-~j_arvm~4 zQ!lo~`5jbnuG5ii9BTG+ezXI*xyCuUIS0_)q#%vbiF9*6Ep>-6Mj^mWEH~V{>3z+a zp7JJSWg#M8+C#2Z(eN@<c<d(E23OZ}FweXS{%rHJ(5-MfI9ofehR7pq?I_c{x-jc@ zlxv??qfB`&TWsl*07lQQTF+GtevDu%u%L$bGdvZmEe?!@u~@!nSs(ARb8L}I9~Ebc z?H62CbcVit;kY9aPc6Uv4(M(P%Xewmy?EcDMCLuN;UoMre3BZX(lCc3j8Z{!h#r_X zaf_OHMvicBs5C;YtV%zt<Kt*M)~Us@5;U{WcKs-2T6n2dP(mX^Qh?Q=iaL`}Y3P*$ zaTJ(!kzm7arm1|N;EwyD(5k2H8sGo!x<ft*U8O`(>XSdk^ay}TEth>s1v@TZ45jVW ztoVEsQ6?f{SIkJDA*P!xcKL?oXxI|8vGrNSgL&4DzM~*36CNekRv-ete8#oATCp2^ zuirS!HLeq6Jyxlv`o1@lz(z+P4kL5@rCUvIb^n;ptxUR4OAUyAuLoVC6nW9K;ATH^ z(1)+UH4@uiU(PwOO2~NzYY#7mV?AZBsBUFO(|BC_$;8;+2a|5Gc%O8WDMh*~<Jf5o zr(9s2CIJ;ELgi3j<=wwfQMurO!p!c-b>F=ytd9+Y9(nPecUJFwrmT##V`!QY9V9WP znliK|^mkn~roKhNDWYWaNqYM@qgd(fVuzHkN)RA{Dk`tJ<VJZI`^S5l|L#y=4&495 z9Q8>p-A+m3ke1mB1w?|C;Ibq34!*01C@9WnY}}Q=1y3QuE1?AL`3n*NIRuKKH4cop zh1b3@qr9XGX25ff<H{uh2$G$4ERixn`QXqz{)Zsb_(*(ziwhek_x=HOf1#&_sbIFi zgl+C{g`@g;l_sgc@Q@|Qi{+t_f}7`yP)kY2=lfaU*DyNwcRgFu_3voY!+iz_Hn{IS zSPKFv#u;dGq~T82(`|Z3ME9IiU1%5<@_rE5{1S9_*;z=yoTF`x@-BRO{8z)II!RZG zmYg?3nWL?qWx17fY20}yGmjC)-6G-RuySpHhdP9-9rf-$PdfO5-37|zE=O$PZ1S4v z>k8~<iFVZu{c`5LW3aj#jYrQPt^#7((Zt8URdm+y*e}8OTjO$rPiUFej^&76!QQFg zr9~S}LSF2p(A+#{t5JrqV+DmHs>Ci(x&<kNoSW#G!#6@bhA1hy-UsXMp9|1xho{g% z)5d=cz+@<=3A%4#X)MpiDIJ9h%e<Z*KOV5Nw^Sb$m|<m~StYw`!;HUxxX*{CtJ}kP z`cuon-O2gMgZLGURcYRUD^p;C9-@j4Fe&PjD=hS=5Uu&yC>V06AH`u{+{8<X{`H-t zyNL6Cs$u_mV^mug+{C_^S({jIms*nkLw1h-jg?1rcge}MvYzjjK_i!qkMqEEr+c|8 zrQUsHv}RJFkNcz+CC*M2U7;Z5Tn?0aWYdNvGtWgw5xZ7`smo`Rx-O&j1Bt2UcL4&= z2YJ~lS>|3V53M8<)`oFa4_AZFJ}h<X3`xZ}Atu#z5aCY4e=3<ghYFZ1g4wno+~&b( zg%-Sy(0MPu!elh6jNASy=6yIjT&@);@<=ch>dcCTF>vvTOZfY3sNQ0+cbT|0GP6J) zDf&m6D+}7i=;77(U*7E|coAFomO=A?x*TbNz@G=~+wx~*n`>`Rj5-j_uiqf=id3XR z04li!j%$r6LU`5ovQru)B55})4dXb<K-~6df%<6I!$2(od4wdWZBng|pBApxre@6i zoFC?l1r7hTJpbGxp7MPPxhH6D+4(dj-ZbjE@$J?QDwV3L9n6&TKPj{(CCA(U@s8bq zy<=;HC~2JnWRQM2l$*+qhs_1V05|V^{50_&NoV2L)cf~g0SRfO8-~)Lz(zNt9o=05 zBLxNs2uP2X6h}#iAl;>ONRCjtySsVz{XPG|{W{w@=RWu6{k|@Fm<uWzFiKm@>}UCi zP5xD+GWJ)52}K(&iKaE2pTCsXXCJ&+LU$5mXs=NPH$6J1wMGgIUF|f__6QvPL!ju{ zGpepoEA(7@z3-lxFIovHv$J_&H3+X#v|MTU@!?0yPtDqOT@Rr!0^&VH_JqyD<ZJd2 z)>S$o4y^?|0G^mcafxQ;zjBnucleb&QdERf1v{6b@It}R^fIB)shmX)LgU1S8thFL zd^7q~i*dNM*>^PYaMz&T^7#Eg`83RkdImd{fYjjFG8A!TvCA~5YoJ3=vGyM<7dLP^ zoll#YW0bj}rnmmL4H~Wd9(niP@#+Q?$va%HBqC57Gf542n^O0cKN=Gq)ujR#H78B{ zNvY1J+29`(v?tN&8;`j)KFo@>8<wB+<v_3=C5fdp9uTnvL~H$ORGQ(BLolq78raX% z@c&nWzPR@I#!8g-2WQwJ4X<-tJKO)U{a!>~g(9Sc&7CK?SK7PR-MpXp1*)F^`*<s} z#jKNif@Ap2x=U=%p0vWj=9DU>JH)45_~`*7>nPTaa*-j}<EZiaPph7ehfMOuHjTqL zzNlQ)_~m?0<d#=F<E{;l+ncJFGDC_P5|4ka&ohrc8Gi~)Za+Ks-X6)EJ3WP@3l1Hr ziyvk;2)Qo4YjC}rS!nl<XeTxol5CZcy4e}s?u{kdxVn^)poK)??B)|Y38(@-@>7ur z7L_^Nul+$zBPuv@>hn%lg96}%Xe6zV;=?D~I`aZjm{qn;ICJ*b<3RBEvSTV}HjMr2 zK+KpT<H%-uINCPj{HLPK609b#IyZOQ&@Usp#i;t!veVQ4-{hF-n-=BF*O))dnqUD@ z?h5~;nE(tww>EBXq@y7FuZXTR5w<*hG?PDKH6w7u<Ouv{1__Hi9EW=`K=#HNeu_Ol zk{;*OR*p~Y9pI;)Zb^<2LD$(=Z-y}7!f?>1wlie*gnGbfO?`Lzo4<e2m{*HV9=}V5 z3#5Rse|pp!B0!#Tlhoc6mShgWgU{aVtp#CIk+K=MjPXPu_zgU21v*Hj!LMJ`afdfO z(*%C1JKaZ;{(pMNWVgx78t0>0i{Xh;=D+TLIVgx(`2crsq%v3BC+~0k!==TLp|i6f z9Xlp;toF~1ODB7;^|ekit^O0o;Rl3q--s(XcE1vO+tRDhnz4Ds)QS3?8uH)Hwe4Y2 zgNEeN7F@U|<})#U&s0xdx36t|>5EX@;XApQVJIF$-aBfQWj?G)<*0t$lz)CGH>hOZ zF#?d|SFhxW{0)r}|IX!UBp?e3IR4griRJlninkT5l7+0IvlQmkf|p0^l$3FzZ`Ivh z-6h#--0k5WGy813*1N)Vi~)lrZ91A@o*4b@NDSp#(V+T!<Fzw{0~2<4o>&!Rl|r`4 zPrPuBkCKm1PN)FG(_=!989Vp|#;!;~>S9Pu)!1=UQht`hFDO%<qhX$Xi+8ND+vQB) zLB}5+D=f)Y^Sq^}b@Yb;yD3(;LiFGR?+y`;ju4NUr^v@O$BM|Kr|b=&15Ni$@f&20 z)miyl@%MFH9$R(1SdI$C7gj)m?<okXXcE;{)Van*J(7?VMTIuU3T)s4&xR@OqN=1< zM8bcZf6$wgpF{;WH`EF;awcHSQcKDEC`@g}GmLP;R+7Slj_sdEnq>h2D)*Z&PI5-- zwjY}oRwbLPig<IqGkg?(j<i`$2bEclZtUns`uS(J8|1BDej5nx80fuz%i<Uk6!o(p zHdp4$!?5{N#ZJe=#S^Q(8y3@G+`_f??b>KH^m6GFEI8mSA+m7j@i_i5^zr8C$&tkE zj-w#I!fZ>WfPc4%rE23HEA0x1d9rpKxMb;HHd{dXsgHMZScK0iaw?;@`M^hXxFPr^ zm7upmllJ}{7zu+sSNc&{?k}fr_ZLWv-K;fNd0ouoR^LXWEKo1UG)+tb@|Ol(uQ>xm zCFf45f{RmU*L4fU6?;#!B;UqNwg5IbXmK`Cv_@yEa-mz=2tP$L#=Fd)kxt;5m?9du zd<H3Ldi0sID{ph;(!1`MERRfSIp5Q|H;XyxfR~p^EkZkL#F%oScpQV~3#a%Gvmv+m zJ&b{71=fuBC7RD6eM|oLe&<5%lI^?hIQ4<2>Va?kjcV0%i*E^prMQCmv0)t@tf5A4 z@Kf|iLa(fQ68r1}$4w!qQ?i^>ff5E-?Bo6I>x~P;-HAj1Oes6S?@qW*ex!ts<Ksa3 zglF*Wn)dcStCc_vZUQ_NW?G|4vU9_PpzuTgZS6%1E6%(NMfyj&-J4?fPmHcN{~m~f z+7;)kYv(9=x}Yp>ZiSMR;G6Oe)TH=1&GRWn`1v~Hr%%6yB_i$hGc4}<08!y{1JQwx z=Sw+7GkxAq<_JIS>FS3S#s^ydFoA&k-GUi0TdizN|4Jnr<;6)mWvuo+(#)*<Xbqr! zc=KSc@JY{%3!j=IS4yNqf@Ymp8EgAwOm^^;qESNl;YdEvfx)(kz+u@bIb8#9Vju|x zKDmzL{t{sxm$9QqDt3qIcAJq2F<3_Ls8!xT!@Mq#*UI|w`?Gh1nWJ|8zrvv3masH& zZdUC{d97jmp4KtS-V*cf*(m82zt6Ndnv>rjMka~!>lBoXP+hj>8pd|-@POuz+6rx* zbGKrFl5$cl>GR{+SU6IXWj#T**q<a&PZ{~pgD0p?SFf-bcQ7BeuL${IZOPtxRVW6d z=H7<A5&S1Dm^%%*3Ko#ZL|G$oLn=n!U+Wrute_DaqX!W5JgVX15ddGm8pgqd7uF$j zaD}&!Uz^7U3ITjQK_r^4W`EU05;IPnDuS4Zp<a4h7UQIvb;N7iMvUO;^{uLIHOH+R ztWS#Yw2rGlQEp5~ayG8a#S+hb5Si)0@eB$&=Ni3DgEFr*6s%@{@<{Y@=44~IYI!=( z9!M^xCKlg6PHDm`D(?I56auOsF8JfufLNLihWJ?03u2d75MVha7!g`iGq{JUmE*qJ z)4>=+y?(zO-uKoolz?eao17l!2CfO;*kAsBDn6e-X8RIu%x(wYai=IrutvQ-61?-r z%FNWuCt$GDDQA<04MQudx=XP5tEW*s_pgrH1Snl}#?!6&V~1WO>TUP9sU9dqX?YQm zZIWx=0@O`Y!l+pA?b~kbIBR&KcvyV84s?y8DNP9WXYE%zr!r~!rgW--fx$CLrLE3P zyqa(4We~SzKM7=9sJbht=LWv~T{f279h==re8p`BRq{blZPtqgIAEI1Q?tJgIQz^B z_;tO}x<?j4r&T1r;cu&6Bb%R6rbKJd_*Xdh@Qd&BR&{z;H~fXMS&R*ft2POJwn%_S z%)8vsQM}#JxF@0~X@v<R8O{^Nz~iE1$|L_{inhBI<5N0wGJBV|n7QXmkK<3=@}(pJ zgDpkfG;6yv4LXd<++EZttZ)0rHz;vpi#;-1GD$uhhBShJX<ra;1WOMYNu^GT;Lg^r z+jp+*Gv)cliX0AIKRZdG;lziTFVBm$fDfI<*F0cYH7`dT^%p-qpbaMcQi7%XZu?%2 zVr|MrZMlSVV?Y|-eMnMbI3D?*eOZ4u&Fhdx(fRn@gqvHPJ##VFki%CJ#oBLNs(k@8 zk6j*t*@7)6)GsId<Xg1m9(#_S&>p%1^JmtX+a_(8rmsfVgw_Wb94su-U);V%P;^GB z3s}*p3wYf(Ev(H%@1nN>1^rFnApSbUFP9$+<J!-VB=2lPC53Na)!{J+I7tb*`fdYv zw~rO<J(-eoV@0sTyE{<nL{y-}D<6)a+t059KqM(r_mr{BBt0W2sAi0&Y)VyY0L}-$ z9^7L%cKI|00o^nuJv5B;rxF9rn=dG>I48c`qMqP%PmKiXHNqcw;{-i&4EOiU^Ey8h z<Au?LQscu&pmOD=jx5ic!RCK;3Q@0^cEu&1Td3%L;Nx9nELQcva@dKH>m*yR9i+S2 z^&FkhW>?!do%KVT6Ub0L*h<#FoC;O@nj@!}2s7{yagb~jbdTs0;jazY+;NR*Xj{9z zMg<+MXX)L@31LtFM&I-wak$`NENp2~sfz?3{`}Rg_2OOHS(c>6n^>J%4)wl)<kMP! z^Dtkt-{T$WWJrIrb>SjBPrG*R!eLbJk||g!PYkO>ZPK;`Jo|J$?({R2+J4hPf-+CD ztp9u~_71dja%qfu3I*Pj2Qr0inGCU)62pb=+ul5FtpT6bDbFjOHaKdU>ll<mtU}6~ z<48K>vGDUXkn+gNXL^3MVKZ-*)rzxUy0)Si*ba_}&x8gL6S}*V^`61n{tuN81c&sp zUthJeyl+gX!Tzt+OVq-GgwkRe-DqXtpzKZdfPP#xL8Woo?>U8pYeoEou+ef}#ki31 zsr+9wd3=c;z=IZY5*|N8&ko`xecl2_Unlw5S(K;<8?WB~o|O+WOp{cvXj)PeqQun{ zS3mT4(#MztD6g|*dahafw6n>*5n1}p(d~qg94&N(DBuxWD_<s~04?w?(EE-Xb?@H= zCXd&FnWpb?Z1szg@aFtTfjs!^uL8-Hb9IFL7tpD)AAqy^pP~2{yGaamE%8UWTQc@V z@BPoNVx4i(_w|OIk{IP{vAOVgm@|A9Bgcy#{;7_%>P{zLL<&XOC>#=W>4ydI5(&g9 z>C6#6@Xw~dtr=x(%sM(p8->DkxS~7EnepY5MLfS2kwYC3FPzMLdrI@jV+>J>nERWL z6(Gsk50skm>5f94FRSNfUuVpvu%R}xCAsq3-Q840;z9OWAP=6YxpXiw_Q;U?+P#jv zk;r?rMHi|2b9Eb=1IEX^wevRtPv)=hvBVztvn0MQwSVO6FsWjW3vpSzoJGTWo4aYh z&wc%`H5Uqx`fkX4R9SkiZK+^Y&Hb3QCWB~Ld(O6v=@24JRR86}7r*IZ`d*E?DBu^6 zC>uZxdlquF3@(qpRKa~)Pw#b&Rxli0rW*40op-igzM=0xDGQ-#I6A4c#q~RSbXvcI zkHV+&vmK9=x5*3$>{<G?N!(4&AICH|1(FF0J^m}LG5ZQFdaABbN^~d=OsH-FTz@(5 z^{B)`rc$Z4o@p1s%vjJ%2Y2SlMqR%@PA*0-A(|voWxhPeU4voyqS5Tc(Nq%2TMy~0 zmZdTZFsM4b=0CjQ88$UrNTXrSUiV>nW>SdKRV}&X*YMP4`!^>7K7M!1oqwngv=?2& zn}J*t+@A&N<9(@a+Bf5x&0@9tCK{AC2rXYhgp}wxMr)y+uRbtLJExtMYIYr%1Xifj zF}X*alFmS-a<HF-MPy`<Fp`{k_JxCwgINNPt*4@P1h{p~`g1!X>56^%jN~ijf)o># zZ%4QFIICE_B7BxQ{ym7=v9p+S^s39`Gbal2C-S_C`{D~B=~ZkqPPe(VOia+v%qf67 zRVlQaX0?CxHd81SKlGh+EG$<IQAhN(nFxxfw%e_?xIWp_Uc7zVqYHvsYA;0=8)-Gk zX*H8FZA4-Pw?@v5DGYR3(3R*;zEC8Xn0fyWWg}9w#e|R(J1Uzw2C&)Nr7KgFjNTO@ zY%D?%jF7e6uw?By1{<!Gy}x>M?u#WFa8S%wCD>xzyi~4ZChpOu#1zvz?|POAof=uU zxdY(q=P`#QvSC_QRy_%IYg&DkU4&dLf2u8+P1{(T%`I(*@b`_m9YgM}4(m)C41p#! zE1u$d#V>wZS$DkqyYOxD_jO;kzDG9MGc?Q^H~Is?80N(PyqtRP)%mA!`}nUmI!`+i zuok3Fe%zW{z-qOr**n&>-w#{1dlANHBzfTJ5*}G;4(4qK>Rub+7E>^i{Yw!E;H?ls zcbL|Yd-Vu?1tc*&oA=uiO~oC4JN0bdl|w7#OlFQ4inFwb)x7n7o(dl(gjFGzNRBN! zSq(GU{dGUav~CvH!eAB*4Yd?*K}G>p$$B%smh{O?$~Lj{`xf-aI!~-8bX<9xL B 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 M07*qoM6N<$f>W^Ku>b%7 literal 0 HcmV?d00001 diff --git a/packages/web/src/dev/Features.tsx b/packages/web/src/dev/Features.tsx index 668583d1b19..e34395d5f28 100644 --- a/packages/web/src/dev/Features.tsx +++ b/packages/web/src/dev/Features.tsx @@ -2,10 +2,11 @@ import { memo } from 'react' import { StyleSheet, View } from 'react-native' import Fade from 'react-reveal/Fade' import Feature from 'src/dev/Feature' +import { H3 } from 'src/fonts/Fonts' import { I18nProps, withNamespaces } from 'src/i18n' import { Cell, GridRow, Spans } from 'src/layout/GridRow' import { hashNav } from 'src/shared/menu-items' -import Title from './Title' +import { colors, standardStyles, textStyles } from 'src/styles' const stableImg = require('src/dev/features/stable.png') const pkiImg = require('src/dev/features/pki.png') const govImg = require('src/dev/features/gov.png') @@ -20,63 +21,77 @@ type Props = I18nProps export default withNamespaces('dev')( memo(function Features({ t }: Props) { return ( - <Fade bottom={true} distance={'40px'}> - <View nativeID={hashNav.build.features}> - <Title invert={true} title={t('featureTitle')} /> - <GridRow mobileStyle={styles.featuresMobile}> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.stableValueCurrencies')} - graphic={stableImg} - text={t('feat.stableText')} - /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature title={t('feat.phonePKI')} graphic={pkiImg} text={t('feat.pkiText')} /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature title={t('feat.onChainGov')} graphic={govImg} text={t('feat.govText')} /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.proofOfStake')} - graphic={stakeImg} - text={t('feat.stakeText')} - /> - </Cell> - </GridRow> - <GridRow mobileStyle={styles.featuresMobile}> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.selfCustody')} - graphic={custodyImg} - text={t('feat.custodyText')} - /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.fastUltraLight')} - graphic={ultraImg} - text={t('feat.ultraText')} - /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.gasMultiCurrency')} - graphic={gasImg} - text={t('feat.gasText')} - /> - </Cell> - <Cell span={Spans.fourth} mobileSpan={Spans.half}> - <Feature - title={t('feat.programmable')} - graphic={evmImg} - text={t('feat.programmableText')} - /> - </Cell> - </GridRow> - </View> - </Fade> + <View style={styles.darkBackground}> + <Fade bottom={true} distance={'40px'}> + <View nativeID={hashNav.build.features}> + <GridRow + desktopStyle={standardStyles.sectionMarginTop} + tabletStyle={standardStyles.sectionMarginTopTablet} + mobileStyle={standardStyles.sectionMarginTopMobile} + > + <Cell span={Spans.full}> + <H3 style={textStyles.invert}>{t('featureTitle')}</H3> + </Cell> + </GridRow> + <GridRow mobileStyle={styles.featuresMobile}> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.stableValueCurrencies')} + graphic={stableImg} + text={t('feat.stableText')} + /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature title={t('feat.phonePKI')} graphic={pkiImg} text={t('feat.pkiText')} /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature title={t('feat.onChainGov')} graphic={govImg} text={t('feat.govText')} /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.proofOfStake')} + graphic={stakeImg} + text={t('feat.stakeText')} + /> + </Cell> + </GridRow> + <GridRow + desktopStyle={standardStyles.sectionMarginBottom} + tabletStyle={standardStyles.sectionMarginBottomTablet} + mobileStyle={[standardStyles.sectionMarginBottomMobile, styles.featuresMobile]} + > + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.selfCustody')} + graphic={custodyImg} + text={t('feat.custodyText')} + /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.fastUltraLight')} + graphic={ultraImg} + text={t('feat.ultraText')} + /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.gasMultiCurrency')} + graphic={gasImg} + text={t('feat.gasText')} + /> + </Cell> + <Cell span={Spans.fourth} mobileSpan={Spans.half}> + <Feature + title={t('feat.programmable')} + graphic={evmImg} + text={t('feat.programmableText')} + /> + </Cell> + </GridRow> + </View> + </Fade> + </View> ) }) ) @@ -86,4 +101,7 @@ const styles = StyleSheet.create({ flexWrap: 'wrap', flexDirection: 'row', }, + darkBackground: { + backgroundColor: colors.dark, + }, }) diff --git a/packages/web/src/dev/FullStack.tsx b/packages/web/src/dev/FullStack.tsx index f2ac4ff7bae..9741c6cfffd 100644 --- a/packages/web/src/dev/FullStack.tsx +++ b/packages/web/src/dev/FullStack.tsx @@ -1,205 +1,279 @@ +import throttle from 'lodash.throttle' +import dynamic from 'next/dynamic' import * as React from 'react' -import { StyleSheet, Text, View } from 'react-native' -import Fade from 'react-reveal/Fade' -import LayersIllo from 'src/dev/LayersIllo' -import Title from 'src/dev/Title' +import { findNodeHandle, StyleSheet, Text, View } from 'react-native' +import { Props as LayerIlloProps } from 'src/dev/LayersIllo' +import StackSection from 'src/dev/StackSection' +import { H2, H3, H4, Li } from 'src/fonts/Fonts' import { I18nProps, withNamespaces } from 'src/i18n' +import Octocat from 'src/icons/Octocat' import { Cell, GridRow, Spans } from 'src/layout/GridRow' import { ScreenProps, ScreenSizes, withScreenSize } from 'src/layout/ScreenSize' -import Button, { BTN, SIZE } from 'src/shared/Button.3' -import { hashNav } from 'src/shared/menu-items' -import OvalCoin from 'src/shared/OvalCoin' +import Button, { BTN } from 'src/shared/Button.3' +import { CeloLinks, hashNav } from 'src/shared/menu-items' +import { HEADER_HEIGHT } from 'src/shared/Styles' import { colors, fonts, standardStyles, textStyles } from 'src/styles' -import { scrollTo as jumpTo } from 'src/utils/utils' +import { scrollTo } from 'src/utils/utils' +const LayersIllo = dynamic((import('src/dev/LayersIllo') as unknown) as Promise< + React.ComponentType<LayerIlloProps> +>) enum Levels { - mobile, - protocol, - proof, + apps, + contracts, + blockchains, + code, +} + +enum StickyMode { + 'normal', + 'attachToBottom', + 'fixed', } interface State { selection: Levels + mode: StickyMode } -class FullStack extends React.PureComponent<I18nProps, State> { - state = { selection: Levels.mobile } - setMobile = () => { - this.setState({ selection: Levels.mobile }) +const GLASS_CEILING = 160 + +class FullStack extends React.PureComponent<I18nProps & ScreenProps, State> { + state = { selection: Levels.apps, mode: StickyMode.normal } + + ref = React.createRef<View>() + illoRef = React.createRef<View>() + + handleScroll = throttle(() => { + if (!(this.props.screen === ScreenSizes.DESKTOP)) { + this.setState({ mode: StickyMode.normal }) + return + } + + const element: any = findNodeHandle(this.ref.current) + if (!element) { + return + } + + const clientRect: DOMRect = element.getBoundingClientRect() + + if (clientRect.top < HEADER_HEIGHT - 100) { + this.illoRef.current.measure((_x, _y, _w, illoHeight) => { + this.autoSetHighlight(clientRect, illoHeight) + + if (clientRect.bottom - illoHeight < 100) { + this.setState({ mode: StickyMode.attachToBottom }) + } else { + this.setState({ mode: StickyMode.fixed }) + } + }) + } else { + this.setState({ mode: StickyMode.normal }) + } + }, 24) + + setL1 = () => { + this.setState({ selection: Levels.apps }) + } + + setL2 = () => { + this.setState({ selection: Levels.contracts }) } - setProtocol = () => { - this.setState({ selection: Levels.protocol }) + setL3 = () => { + this.setState({ selection: Levels.blockchains }) } - setProof = () => { - this.setState({ selection: Levels.proof }) + + setCode = () => { + this.setState({ selection: Levels.code }) } setLevel = (level: Levels) => { this.setState({ selection: level }) } - render() { - const { t } = this.props - const { selection } = this.state - const isMobileSelected = selection === Levels.mobile - const isProtocol = selection === Levels.protocol - const isProof = selection === Levels.proof - return ( - <Fade bottom={true} distance={'50px'}> - <View> - <Title title={t('techTitle')} /> - <GridRow - desktopStyle={standardStyles.sectionMarginBottom} - tabletStyle={standardStyles.sectionMarginBottomTablet} - mobileStyle={standardStyles.sectionMarginBottomMobile} - > - <Cell span={Spans.fourth} tabletSpan={Spans.third}> - <Text style={fonts.p}>{t('fullStackText')}</Text> - </Cell> - <Cell span={Spans.half} tabletSpan={Spans.third} style={styles.illo}> - <LayersIllo onSelectLayer={this.setLevel} activeLayer={selection} /> - </Cell> - <Cell span={Spans.fourth} tabletSpan={Spans.third} style={styles.indicators}> - <LevelSelection - active={isMobileSelected} - onPressTitle={this.setMobile} - onPressButton={jumpToMobile} - btnText={t('learnMore')} - text={t('levelLabel.mobileText')} - > - {t(`levelLabel.mobile`)} - </LevelSelection> - <LevelSelection - active={isProtocol} - onPressTitle={this.setProtocol} - onPressButton={jumpToProtocol} - btnText={t('learnMore')} - text={t('levelLabel.protocolText')} - > - {t(`levelLabel.protocol`)} - </LevelSelection> - <LevelSelection - active={isProof} - onPressTitle={this.setProof} - onPressButton={jumpToProof} - btnText={t('learnMore')} - text={t('levelLabel.proofText')} - > - {t(`levelLabel.proof`)} - </LevelSelection> - </Cell> - </GridRow> - </View> - </Fade> - ) + scrollTo = (level: Levels) => { + switch (level) { + case Levels.apps: + scrollTo(hashNav.build.applications) + break + case Levels.contracts: + scrollTo(hashNav.build.contracts) + break + case Levels.blockchains: + scrollTo(hashNav.build.blockchain) + break + } } -} -function jumpToProof() { - jumpTo(hashNav.build.blockchain, 'center') -} -function jumpToProtocol() { - jumpTo(hashNav.build.contracts, 'center') -} + autoSetHighlight(clientRect: DOMRect, illoHeight: number) { + requestAnimationFrame(() => { + const partial = clientRect.height / 4 + const amountPastGlassTop = clientRect.y - HEADER_HEIGHT + const highestOffScreen = GLASS_CEILING + amountPastGlassTop < 0 + const shouldTurnOnLevelOne = GLASS_CEILING + partial + amountPastGlassTop < 0 -function jumpToMobile() { - jumpTo(hashNav.build.applications) -} + if (clientRect.bottom - illoHeight - partial + GLASS_CEILING < 0) { + this.setCode() + } else if (shouldTurnOnLevelOne) { + this.setL3() + } else if (highestOffScreen) { + this.setL2() + } else { + this.setL1() + } + }) + } -interface LevelSelectionProps { - active: boolean - children: React.ReactNode - onPressTitle: () => void - onPressButton: () => void - text: string - btnText: string -} + componentDidMount() { + window.addEventListener('scroll', this.handleScroll) + } + + componentWillUnmount() { + window.removeEventListener('scroll', this.handleScroll) + } + + modeStyle = () => { + switch (this.state.mode) { + case StickyMode.fixed: + return [styles.sticky, styles.base] + case StickyMode.attachToBottom: + return [styles.attachToBottom, styles.base] + default: + return styles.base + } + } + + render() { + const { t, screen } = this.props + const isDesktop = screen === ScreenSizes.DESKTOP + const isBrowseCodeFaded = isDesktop && !(this.state.selection === Levels.code) + + const activeLayer = this.state.selection === Levels.code ? 'all' : this.state.selection -const LevelSelection = withScreenSize<LevelSelectionProps & ScreenProps>( - function LevelSelectionComponent({ - active, - children, - onPressTitle, - text, - btnText, - onPressButton, - screen, - }) { return ( - <View - style={[ - standardStyles.row, - standardStyles.elementalMarginBottom, - screen === ScreenSizes.DESKTOP && styles.levelSection, - ]} - > - <View style={styles.iconColumn}> - {active && ( - <Fade> - <OvalCoin size={12} color={colors.primary} /> - </Fade> - )} - </View> - <View style={styles.titleArea}> - <Text - style={[ - fonts.a, - styles.levelSectionTitle, - textStyles.medium, - active ? {} : styles.levelSectionTitleInactive, - ]} - onPress={onPressTitle} - > - {children} - </Text> - {active && ( - <Fade> - <View> - <Text style={[fonts.legal, styles.microText]}>{text}</Text> - <Button text={btnText} kind={BTN.NAKED} size={SIZE.small} onPress={onPressButton} /> + <View style={standardStyles.darkBackground} ref={this.ref}> + <GridRow + desktopStyle={standardStyles.sectionMarginTop} + tabletStyle={[standardStyles.sectionMarginTopTablet, styles.tabletContainer]} + mobileStyle={standardStyles.sectionMarginTopMobile} + allStyle={styles.container} + > + <Cell span={Spans.half} tabletSpan={Spans.full}> + <View style={this.modeStyle()} ref={this.illoRef}> + <View style={styles.illoContainer}> + <H2 style={textStyles.invert}>{t('stackSubtitle')}</H2> + <H3 style={[textStyles.invert, standardStyles.elementalMargin]}> + {t('stackTitle')} + </H3> + <Text style={[fonts.p, textStyles.invert, standardStyles.elementalMarginBottom]}> + {t('stackDescription')} + </Text> + {isDesktop && ( + <LayersIllo activeLayer={activeLayer} onSelectLayer={this.setLevel} /> + )} </View> - </Fade> - )} - </View> + </View> + </Cell> + <Cell + span={Spans.half} + tabletSpan={Spans.three4th} + style={isDesktop && styles.stackContainer} + > + <StackSection + onPress={this.setL1} + id={hashNav.build.applications} + isSelected={this.state.selection === Levels.apps || !isDesktop} + title={t('mobile.title')} + text={t('mobile.text')} + buttonOne={{ title: t('installWallet'), href: CeloLinks.walletApp }} + buttonTwo={{ title: t('seeCode'), href: CeloLinks.monorepo }} + > + <Li style={textStyles.invert}>{t('mobile.nonCustodial')}</Li> + <Li style={textStyles.invert}>{t('mobile.mobileUltra')}</Li> + <Li style={textStyles.invert}>{t('mobile.exchange')}</Li> + <Li style={textStyles.invert}>{t('mobile.qr')}</Li> + </StackSection> + <StackSection + onPress={this.setL2} + id={hashNav.build.contracts} + isSelected={this.state.selection === Levels.contracts || !isDesktop} + title={t('protocol.title')} + text={t('protocol.text')} + buttonOne={{ title: t('readMore'), href: CeloLinks.docsOverview }} + buttonTwo={{ title: t('seeCode'), href: CeloLinks.monorepo }} + > + <Li style={textStyles.invert}>{t('protocol.algoReserve')}</Li> + <Li style={textStyles.invert}>{t('protocol.cryptoCollat')}</Li> + <Li style={textStyles.invert}>{t('protocol.native')}</Li> + </StackSection> + <StackSection + onPress={this.setL3} + id={hashNav.build.blockchain} + isSelected={this.state.selection === Levels.blockchains || !isDesktop} + title={t('proof.title')} + text={t('proof.text')} + buttonOne={{ title: t('readMore'), href: CeloLinks.docsOverview }} + buttonTwo={{ title: t('seeCode'), href: CeloLinks.blockChainRepo }} + > + <Li style={textStyles.invert}>{t('proof.permissionless')}</Li> + <Li style={textStyles.invert}>{t('proof.rewardsWeighted')}</Li> + <Li style={textStyles.invert}>{t('proof.onChain')}</Li> + </StackSection> + <View + style={[ + standardStyles.centered, + isDesktop ? standardStyles.sectionMargin : {}, + isBrowseCodeFaded && styles.faded, + styles.browseCodeArea, + ]} + > + <H4 style={[textStyles.invert, textStyles.center]}>{t('stackBrowseTitle')}</H4> + <Text + style={[standardStyles.elementalMarginBottom, textStyles.invert, textStyles.center]} + > + {t('stackBrowseCopy')}{' '} + </Text> + <Button + disabled={isBrowseCodeFaded} + kind={BTN.PRIMARY} + text={t('stackBrowseButton')} + target="_blank" + href={CeloLinks.gitHub} + iconRight={<Octocat color={colors.white} size={20} />} + /> + </View> + </Cell> + </GridRow> </View> ) } -) +} -export default withNamespaces('dev')(FullStack) +export default withScreenSize(withNamespaces('dev')(FullStack)) const styles = StyleSheet.create({ - illo: { - paddingHorizontal: 10, - }, - container: { - flexWrap: 'wrap', - flex: 1, - }, - indicators: { - justifyContent: 'space-between', - }, - levelSectionTitle: { - transitionProperty: 'color', - transitionDuration: '1500ms', - }, - levelSectionTitleInactive: { - color: colors.secondary, - }, - levelSection: { - minHeight: 100, - height: '30%', + container: { overflow: 'hidden', flexWrap: 'wrap' }, + tabletContainer: { justifyContent: 'flex-end' }, + sticky: { + // @ts-ignore + position: 'fixed', + top: HEADER_HEIGHT, + zIndex: 10, }, - microText: { - marginVertical: 10, + attachToBottom: { + bottom: 0, + paddingTop: HEADER_HEIGHT, + position: 'absolute', }, - titleArea: { - flex: 1, + illoContainer: { width: '100%', maxWidth: 400 }, + stackContainer: { paddingTop: GLASS_CEILING }, + faded: { + opacity: 0.6, }, - iconColumn: { - width: 8, - marginRight: 12, - marginTop: 2, + browseCodeArea: { + paddingVertical: 100, + transitionProperty: 'opacity', + transitionDuration: '100ms', }, }) diff --git a/packages/web/src/dev/LayersIllo.tsx b/packages/web/src/dev/LayersIllo.tsx index 007fd986007..3846eb9993d 100644 --- a/packages/web/src/dev/LayersIllo.tsx +++ b/packages/web/src/dev/LayersIllo.tsx @@ -5,19 +5,19 @@ import { colors } from 'src/styles' import Svg from 'svgs' const VECTORS = [ - 'M14.5328 23.5C9.62669 23.5 7.17556 17.563 10.6527 14.1019L20.0749 4.72328C22.7922 2.0185 26.4702 0.50002 30.3042 0.50002L440.651 0.500001C444.611 0.500001 448.399 2.1194 451.134 4.98215L459.943 14.2001C463.287 17.6993 460.807 23.5 455.967 23.5L14.5328 23.5Z', - 'M11.4193 151.5C6.98843 151.5 4.37635 146.529 6.89001 142.88L20.0519 123.774C22.7579 119.846 27.2227 117.5 31.9927 117.5L438.961 117.5C443.849 117.5 448.409 119.964 451.089 124.053L463.495 142.985C465.892 146.643 463.268 151.5 458.895 151.5L11.4193 151.5Z', - 'M9.24998 289.5C5.26577 289.5 2.60346 285.396 4.22786 281.758L20.6009 245.088C22.9335 239.864 28.1198 236.5 33.841 236.5L437.139 236.5C442.956 236.5 448.211 239.977 450.485 245.332L465.995 281.85C467.536 285.477 464.874 289.5 460.933 289.5L9.24998 289.5Z', + 'M15.489 18.5002C10.5885 18.5002 8.13484 12.5749 11.6006 9.11039L15.6851 5.02734C18.4043 2.3092 22.0916 0.78225 25.9363 0.78225L341.756 0.782236C345.727 0.782236 349.524 2.41039 352.261 5.28674L355.993 9.20877C359.325 12.711 356.843 18.5002 352.008 18.5002L15.489 18.5002Z', + 'M12.1119 78.7062C7.6596 78.7062 5.05238 73.6922 7.60944 70.0475L15.2772 59.118C17.9916 55.249 22.4212 52.9457 27.1473 52.9457L340.66 52.9457C345.505 52.9457 350.031 55.3663 352.721 59.3969L359.899 70.1532C362.338 73.8081 359.718 78.7062 355.324 78.7062L12.1119 78.7062Z', + 'M11.0276 146.5C6.86963 146.5 4.21536 142.064 6.18095 138.4L15.9738 120.146C18.4993 115.438 23.4089 112.5 28.7513 112.5L339.954 112.5C345.404 112.5 350.393 115.556 352.87 120.409L362.101 138.5C363.969 142.16 361.311 146.5 357.202 146.5L11.0276 146.5Z', ] -interface Props { - activeLayer: number +export interface Props { + activeLayer: number | 'all' onSelectLayer: (index: number) => void } export default React.memo<Props>(function LayersIllo({ activeLayer, onSelectLayer }: Props) { return ( - <Svg width="100%" height="100%" viewBox="0 0 470 290" fill="none"> + <Svg width="100%" height="290px" viewBox="0 0 367 147" fill="none"> {VECTORS.map((vector, index) => { const onPress = () => onSelectLayer(index) return ( @@ -25,8 +25,11 @@ export default React.memo<Props>(function LayersIllo({ activeLayer, onSelectLaye key={vector} d={vector} onPress={onPress} - style={[styles.clicky, activeLayer === index ? styles.active : styles.inactive]} - stroke={colors.screenGray} + style={[ + styles.clicky, + activeLayer === 'all' || activeLayer === index ? styles.active : styles.inactive, + ]} + stroke={colors.white} fill={'transparent'} /> ) diff --git a/packages/web/src/dev/LeaderBoard.tsx b/packages/web/src/dev/LeaderBoard.tsx new file mode 100644 index 00000000000..8dbf999e98b --- /dev/null +++ b/packages/web/src/dev/LeaderBoard.tsx @@ -0,0 +1,139 @@ +import getConfig from 'next/config' +import * as React from 'react' +import { LayoutChangeEvent, StyleSheet, Text, View } from 'react-native' +import Racer from 'src/dev/Racer' +import { I18nProps, withNamespaces } from 'src/i18n' +import { colors, fonts, standardStyles, textStyles } from 'src/styles' +import Button, { BTN, SIZE } from '../shared/Button.3' + +interface BoardProps { + leaders: Competitor[] +} + +interface Competitor { + identity: string + points: number +} + +interface State { + width: number + page: number +} + +const PORTIONS = 8 + +class LeaderBoard extends React.PureComponent<BoardProps & I18nProps, State> { + state: State = { + width: 0, + page: 0, + } + + onLayout = (event: LayoutChangeEvent) => { + const { width } = event.nativeEvent.layout + this.setState({ width }) + } + + onExpand = () => { + const { page } = this.state + this.setState({ page: page + 1 }) + } + + render() { + const { page } = this.state + const { pageLength } = getConfig().publicRuntimeConfig.LEADERBOARD + const showExpandButton = this.props.leaders.length >= (page + 1) * pageLength + + if (this.props.leaders.length < 1) { + return null + } + + const sortedLeaders = this.props.leaders.sort(sorter).slice(0, pageLength * (page + 1)) + const maxPoints = round(sortedLeaders[0].points * 1.1, 100) + const width = this.state.width + return ( + <View onLayout={this.onLayout}> + {sortedLeaders + .map(({ points, identity }) => { + return { + identity, + relativePoints: round((points / maxPoints) * width), + } + }) + .map((leader, index) => ({ ...leader, color: getJersey(index) })) + .map((leader) => ( + <Racer + key={leader.identity} + relativePoints={leader.relativePoints} + color={leader.color} + identity={leader.identity} + /> + ))} + <Axis max={maxPoints} /> + {showExpandButton && ( + <View style={[styles.buttonExpand, standardStyles.elementalMarginTop]}> + <Button + text={this.props.t('expandLeaderboard')} + kind={BTN.NAKED} + size={SIZE.normal} + onPress={this.onExpand} + /> + </View> + )} + </View> + ) + } +} +export default withNamespaces('dev')(LeaderBoard) + +const JERSEYS = [colors.primary, colors.lightBlue, colors.red, colors.purple, colors.gold] + +function getJersey(rank: number): colors { + const index = rank % JERSEYS.length + return JERSEYS[index] +} + +function sorter(alpha: Competitor, bravo: Competitor) { + if (alpha.points === bravo.points) { + return 0 + } else if (alpha.points < bravo.points) { + return 1 + } + return -1 +} + +function Axis({ max }: { max: number }) { + const scaledMax = max / Math.pow(10, 20) + const portion = scaledMax / PORTIONS + + return ( + <View style={[standardStyles.row, styles.xaxis]}> + {Array(PORTIONS) + .fill(portion) + .map((ratio, index) => { + const amount = round(ratio * index) + return ( + <Text key={amount} style={[fonts.small, textStyles.invert]}> + {amount} + </Text> + ) + })} + <Text key={max} style={[fonts.small, textStyles.invert]}> + {round(scaledMax)} + </Text> + </View> + ) +} + +const styles = StyleSheet.create({ + xaxis: { + justifyContent: 'space-between', + }, + buttonExpand: { + alignItems: 'center', + }, +}) + +function round(number: number, magnitude?: number) { + const precision = magnitude || 10 + return Math.ceil(number / precision) * precision +} diff --git a/packages/web/src/dev/LeaderBoardApp.tsx b/packages/web/src/dev/LeaderBoardApp.tsx new file mode 100644 index 00000000000..dc3eeef95ae --- /dev/null +++ b/packages/web/src/dev/LeaderBoardApp.tsx @@ -0,0 +1,59 @@ +import ApolloClient from 'apollo-boost' +import { InMemoryCache } from 'apollo-cache-inmemory' +import fetch from 'cross-fetch' +import gql from 'graphql-tag' +import getConfig from 'next/config' +import * as React from 'react' +import { ApolloProvider, Query } from 'react-apollo' +import LeaderBoard from 'src/dev/LeaderBoard' +import LeaderBoardError from 'src/dev/LeaderBoardError' +import LeaderBoardLoading from 'src/dev/LeaderBoardLoading' +import { I18nProps, withNamespaces } from 'src/i18n' + +const graphqlURI = getConfig().publicRuntimeConfig.LEADERBOARD.uri + +const createApolloClient = () => { + return new ApolloClient({ + uri: graphqlURI, + cache: new InMemoryCache(), + fetch, + }) +} + +const query = gql` + query AddresessOrderedByBalance { + leaderboard { + points + address + identity + } + } +` + +class LeaderBoardApp extends React.PureComponent<I18nProps> { + render() { + return ( + <ApolloProvider client={createApolloClient()}> + <Query query={query}> + {({ loading, error, data }) => { + if (loading) { + return <LeaderBoardLoading /> + } + if (error) { + return <LeaderBoardError error={error} /> + } + const LEADERS = data.leaderboard.map((account) => { + return { + identity: account.identity, + points: account.points, + } + }) + return <LeaderBoard leaders={LEADERS} /> + }} + </Query> + </ApolloProvider> + ) + } +} + +export default withNamespaces('dev')(LeaderBoardApp) diff --git a/packages/web/src/dev/LeaderBoardError.tsx b/packages/web/src/dev/LeaderBoardError.tsx new file mode 100644 index 00000000000..55af06dad35 --- /dev/null +++ b/packages/web/src/dev/LeaderBoardError.tsx @@ -0,0 +1,38 @@ +import * as React from 'react' +import { StyleSheet, Text, View } from 'react-native' +import { H3 } from 'src/fonts/Fonts' +import { I18nProps, withNamespaces } from 'src/i18n' +import { colors } from 'src/styles' + +interface Props { + error: any +} + +class LeaderBoardError extends React.PureComponent<Props & I18nProps> { + render() { + const { t, error } = this.props + return ( + <View style={styles.leaderBoardError}> + <H3 style={styles.leaderBoardErrorTitle}>{t('leaderboardError')}</H3> + <Text style={styles.leaderBoardErrorMessage}>{JSON.stringify(error.message, null, 2)}</Text> + </View> + ) + } +} + +const styles = StyleSheet.create({ + leaderBoardError: { + backgroundColor: colors.dark, + alignItems: 'center', + }, + leaderBoardErrorTitle: { + color: colors.red, + marginBottom: '2em', + }, + leaderBoardErrorMessage: { + fontFamily: 'monospace', + color: colors.red, + }, +}) + +export default withNamespaces('dev')(LeaderBoardError) diff --git a/packages/web/src/dev/LeaderBoardLoading.tsx b/packages/web/src/dev/LeaderBoardLoading.tsx new file mode 100644 index 00000000000..50131fffcc5 --- /dev/null +++ b/packages/web/src/dev/LeaderBoardLoading.tsx @@ -0,0 +1,24 @@ +import * as React from 'react' +import { StyleSheet, View } from 'react-native' +import { I18nProps, withNamespaces } from 'src/i18n' +import Spinner from 'src/shared/Spinner' +import { colors } from 'src/styles' + +class LeaderBoardLoading extends React.PureComponent<I18nProps> { + render() { + return ( + <View style={styles.leaderBoardLoading}> + <Spinner size={'medium'} color={colors.white} /> + </View> + ) + } +} + +const styles = StyleSheet.create({ + leaderBoardLoading: { + backgroundColor: colors.dark, + alignItems: 'center', + }, +}) + +export default withNamespaces('dev')(LeaderBoardLoading) diff --git a/packages/web/src/dev/Racer.tsx b/packages/web/src/dev/Racer.tsx new file mode 100644 index 00000000000..426b8488ff4 --- /dev/null +++ b/packages/web/src/dev/Racer.tsx @@ -0,0 +1,92 @@ +import * as React from 'react' +import { StyleSheet, Text, View } from 'react-native' + +import OvalCoin from 'src/shared/OvalCoin' +import { colors, fonts, standardStyles } from 'src/styles' + +interface RacerProps { + relativePoints: number + identity: string + color: colors +} + +const COIN_OFFSET = 5 + +export default React.memo(function Racer({ + color, + identity, + relativePoints: relativePoints, +}: RacerProps) { + const lineAnimationKeyframes = [ + { + from: { + transform: [{ scaleX: 1 }], + }, + to: { + transform: [{ scaleX: relativePoints }], + }, + }, + ] + + const coinAnimationKeyframes = [ + { + from: { + transform: [{ translateX: -COIN_OFFSET }], + }, + to: { + transform: [{ translateX: relativePoints - COIN_OFFSET }], + }, + }, + ] + + const animationTimingFunction = `cubic-bezier(${Math.random()},${Math.random()},${Math.random()},${Math.random()})` + + return ( + <View style={[standardStyles.elementalMarginTop]}> + <Text style={[fonts.legal, { color }]}>{identity}</Text> + <View style={[standardStyles.row, styles.lineGroup]}> + <View + style={[ + styles.line, + styles.animatable, + { + backgroundColor: color, + animationKeyframes: lineAnimationKeyframes, + animationTimingFunction, + }, + ]} + /> + <View + style={[ + styles.onLine, + styles.animatable, + { animationKeyframes: coinAnimationKeyframes, animationTimingFunction }, + ]} + > + <OvalCoin color={color} size={20} /> + </View> + </View> + </View> + ) +}) + +const styles = StyleSheet.create({ + line: { + height: 2, + width: 1, + transformOrigin: 'left', + }, + onLine: { + transform: [{ translateX: -COIN_OFFSET }], + }, + lineGroup: { + marginTop: 5, + alignItems: 'center', + }, + animatable: { + animationDuration: '2s', + animationDelay: '100ms', + animationIterationCount: 1, + animationFillMode: 'both', + }, +}) diff --git a/packages/web/src/dev/StackSection.tsx b/packages/web/src/dev/StackSection.tsx index b033b193a08..1fbd083a6f2 100644 --- a/packages/web/src/dev/StackSection.tsx +++ b/packages/web/src/dev/StackSection.tsx @@ -1,11 +1,10 @@ import * as React from 'react' import { StyleSheet, Text, View } from 'react-native' -import Fade from 'react-reveal/Fade' -import { H3, Ul } from 'src/fonts/Fonts' -import { Cell, GridRow, Spans } from 'src/layout/GridRow' +import { Ul } from 'src/fonts/Fonts' import { ScreenProps, ScreenSizes, withScreenSize } from 'src/layout/ScreenSize' import Button, { BTN, SIZE } from 'src/shared/Button.3' -import { fonts, standardStyles, textStyles } from 'src/styles' +import OvalCoin from 'src/shared/OvalCoin' +import { colors, fonts, standardStyles, textStyles } from 'src/styles' interface BTNProps { title: string @@ -20,62 +19,85 @@ interface Props { children: React.ReactNode buttonOne: BTNProps buttonTwo: BTNProps + onPress: () => void + isSelected: boolean } +const TRANS_DURATION = 500 + export default withScreenSize( React.memo(function StackSection(props: Props & ScreenProps) { - const { title, text, buttonOne, buttonTwo, label, children } = props + const { title, text, buttonOne, buttonTwo, children, onPress, isSelected, screen } = props + const isMobile = props.screen === ScreenSizes.MOBILE + const containerStyle = isMobile ? styles.mobileContainer : styles.container + return ( - <Fade duration={500} bottom={true} distance="20px"> - <View nativeID={props.id}> - <GridRow - desktopStyle={standardStyles.blockMarginBottom} - tabletStyle={standardStyles.blockMarginBottomTablet} - mobileStyle={[standardStyles.blockMarginBottomMobile, styles.mobile]} + <View + nativeID={props.id} + // @ts-ignore issue with transition* even though Stylesheet is fine with it + style={[containerStyle, styles.fade, isSelected ? styles.bright : styles.dim]} + > + <View style={styles.content}> + <Text + onPress={onPress} + style={[fonts.h5, standardStyles.elementalMarginBottom, textStyles.invert]} > - <Cell span={Spans.fourth}> - <Text style={[fonts.superLarge, textStyles.invert]}>{label}</Text> - </Cell> - <Cell span={Spans.half} style={styles.content}> - <H3 style={[standardStyles.elementalMarginBottom, textStyles.invert]}>{title}</H3> - <Text style={[fonts.p, textStyles.readingOnDark]}>{text}</Text> - <Ul style={styles.list}>{children}</Ul> - </Cell> - <Cell - span={Spans.fourth} - style={props.screen === ScreenSizes.MOBILE && styles.buttonsMobile} - > - <Button - text={buttonOne.title} - kind={BTN.PRIMARY} - size={SIZE.small} - href={buttonOne.href} - target={'blank'} - /> - <View style={styles.separator} /> - <Button - text={buttonTwo.title} - kind={BTN.SECONDARY} - size={SIZE.small} - href={buttonTwo.href} - target={'blank'} - align="flex-start" - /> - </Cell> - </GridRow> + {screen === ScreenSizes.DESKTOP && ( + <View style={[styles.coin, isSelected ? styles.bright : styles.off]}> + <OvalCoin color={colors.primary} size={15} /> + </View> + )} + + {title} + </Text> + <Text style={[fonts.p, textStyles.invert]}>{text}</Text> + <Ul style={styles.list}>{children}</Ul> + </View> + <View style={isMobile ? styles.mobileButtonArea : styles.buttonArea}> + <Button + text={buttonOne.title} + kind={BTN.PRIMARY} + size={SIZE.small} + href={buttonOne.href} + target={'blank'} + /> + <View style={styles.separator} /> + <Button + text={buttonTwo.title} + kind={BTN.SECONDARY} + size={SIZE.small} + href={buttonTwo.href} + target={'blank'} + align="flex-start" + /> </View> - </Fade> + </View> ) }) ) const styles = StyleSheet.create({ - content: { + container: { + flexDirection: 'row', + flex: 1, + width: '100%', justifyContent: 'space-between', + marginVertical: 20, }, - buttonArea: { - alignItems: 'center', + mobileContainer: { + marginBottom: 60, + }, + fade: { + transitionDuration: '500ms', + transitionProperty: 'opacity', + }, + content: { flex: 1, + maxWidth: 400, + }, + buttonArea: { + marginTop: 45, + marginHorizontal: 10, }, separator: { marginVertical: 10, @@ -86,8 +108,18 @@ const styles = StyleSheet.create({ list: { marginLeft: 10, }, - buttonsMobile: { + mobileButtonArea: { flexDirection: 'row', justifyContent: 'space-evenly', + marginBottom: 10, + }, + coin: { + transitionProperty: 'opacity', + transitionDuration: `${TRANS_DURATION}ms`, + transform: [{ translateX: -30 }], + position: 'absolute', }, + bright: { opacity: 1 }, + dim: { opacity: 0.6 }, + off: { opacity: 0 }, }) diff --git a/packages/web/src/dev/Transceive.tsx b/packages/web/src/dev/Transceive.tsx new file mode 100644 index 00000000000..71b0df90be0 --- /dev/null +++ b/packages/web/src/dev/Transceive.tsx @@ -0,0 +1,125 @@ +import * as React from 'react' +import { StyleSheet } from 'react-native' +import { G, Path } from 'src/shared/svg' +import { colors } from 'src/styles' +import Svg from 'svgs' + +export default React.memo(function Transceive() { + const phase1 = VALIDATOR_PATHS.length + return ( + <Svg width="100%" height="100%" viewBox="0 0 550 360" fill="none"> + <G style={{ mixBlendMode: 'screen' }} opacity="0.8"> + <Path + d={ + 'M17.2856 166.012C11.003 166.012 4.23449 171.89 1.57066 179.71C0.0293159 184.231 0.263867 188.551 2.2408 191.582C3.59785 193.692 5.72557 194.965 8.22187 195.199C8.48993 195.233 8.75799 195.233 9.02605 195.233C11.9747 195.233 15.1411 193.776 17.939 191.331C20.7369 188.903 23.1494 185.47 24.6405 181.535C26.3829 176.913 26.1818 172.509 24.0876 169.462C22.5295 167.235 20.117 166.012 17.2856 166.012Z' + } + key={'validator'} + fill="#FCBA27" + /> + {VALIDATOR_PATHS.map((d, index) => { + return ( + <Path + d={d} + key={d.substr(16)} + fill="#FCBA27" + style={[styles.animate, styles.ripple, { animationDelay: `${decelerate(index)}ms` }]} + /> + ) + })} + <Path + style={[styles.animate, styles.ripple, { animationDelay: `${decelerate(phase1)}ms` }]} + key={'middle'} + fill="#FDEE90" + d="M314.141 2.57935C348.308 2.57935 377.263 17.3074 395.689 44.0811C421.108 80.8884 423.508 134.255 402.27 190.485C384.67 236.862 355.586 279.344 320.308 310.064C285.392 340.629 247.018 357.446 212.283 357.446C208.567 357.446 205.521 357.317 202.605 357.008C172.592 354.248 147.121 338.875 130.889 313.649C107.121 277.074 104.231 224.558 122.941 169.567C155.405 74.3627 237.599 2.57935 314.141 2.57935ZM314.141 0C236.67 0 153.315 72.4798 120.489 168.741C101.547 224.429 104.463 277.744 128.721 315.042C145.418 340.964 171.586 356.75 202.373 359.561C205.65 359.897 208.902 360 212.308 360C248.747 360 287.637 342.073 322.037 311.972C356.437 282.026 386.321 239.88 404.695 191.388C426.244 134.358 423.766 80.1404 397.805 42.5851C378.863 15.115 349.108 0 314.141 0Z" + /> + {PAYMENT_PATHS.map((d, index) => { + return ( + <Path + style={[ + styles.animate, + styles.ripple, + { animationDelay: `${accelerate(phase1 + index - 1, decelerate(phase1 - 2))}ms` }, + ]} + key={d.substr(16)} + d={d} + fill={colors.greenScreen} + /> + ) + })} + <Path + d="M534.523 166.012C528.24 166.012 521.471 171.89 518.808 179.71C517.266 184.231 517.501 188.551 519.478 191.582C520.835 193.692 522.963 194.965 525.459 195.199C525.727 195.233 525.995 195.233 526.263 195.233C529.212 195.233 532.378 193.776 535.176 191.331C537.974 188.903 540.386 185.47 541.877 181.535C543.62 176.913 543.419 172.509 541.325 169.462C539.766 167.235 537.354 166.012 534.523 166.012Z" + stroke={colors.greenScreen} + strokeWidth="2" + style={[ + styles.animate, + styles.solidify, + { + animationDelay: `${accelerate( + phase1 + PAYMENT_PATHS.length - 1, + decelerate(phase1 - 2) + )}ms`, + }, + ]} + /> + </G> + </Svg> + ) +}) + +const SPEED = 100 +const OVERLAP_MULTLIER = 8 +const DURATION = SPEED * OVERLAP_MULTLIER + +const styles = StyleSheet.create({ + animate: { + animationDuration: `${DURATION}ms`, + animationFillMode: 'both', + animationIterationCount: 1, + animationTimingFunction: 'linear', + }, + solidify: { + animationKeyframes: [ + { + from: { fill: 'transparent' }, + to: { fill: colors.greenScreen }, + }, + ], + }, + ripple: { + opacity: 0, + animationKeyframes: [ + { + from: { opacity: 0 }, + to: { opacity: 1 }, + }, + ], + }, +}) + +const BASE_DELAY = 2000 + +function accelerate(index: number, starting: number) { + return starting + index * SPEED * 1.5 ** 2 +} + +function decelerate(index: number) { + return BASE_DELAY + Math.round(SPEED * (index + 1) ** 1.33) +} + +const PAYMENT_PATHS = [ + 'M345.847 25.0715C375.628 25.0715 400.867 37.9167 416.944 61.234C439.138 93.3469 441.228 139.93 422.673 189.041C407.293 229.588 381.873 266.679 351.06 293.556C320.557 320.227 287.06 334.929 256.738 334.929C253.512 334.929 250.828 334.8 248.299 334.542C222.131 332.143 199.938 318.731 185.796 296.755C165.048 264.848 162.519 218.987 178.88 170.96C207.215 87.8271 279.035 25.0715 345.847 25.0715ZM345.847 22.4922C278.054 22.4922 205.125 85.9184 176.402 170.134C159.835 218.858 162.389 265.519 183.602 298.147C198.209 320.82 221.099 334.645 248.041 337.096C250.906 337.379 253.77 337.482 256.712 337.482C288.583 337.482 322.622 321.8 352.738 295.465C382.828 269.233 408.996 232.348 425.073 189.918C443.912 140.007 441.744 92.5731 419.06 59.738C402.493 35.7243 376.428 22.4922 345.847 22.4922Z', + 'M377.589 47.5891C402.983 47.5891 424.531 58.5514 438.234 78.4382C457.176 105.857 458.957 145.682 443.112 187.648C429.951 222.34 408.196 254.092 381.822 277.074C355.757 299.875 327.112 312.437 301.228 312.437C298.493 312.437 296.196 312.334 294.028 312.102C271.731 310.064 252.789 298.612 240.712 279.86C222.983 252.596 220.841 213.416 234.828 172.352C259.035 101.291 320.48 47.5891 377.589 47.5891ZM377.589 45.0098C319.473 45.0098 256.97 99.3567 232.351 171.579C218.131 213.338 220.351 253.318 238.518 281.304C251.035 300.752 270.647 312.592 293.744 314.707C296.196 314.965 298.647 315.042 301.176 315.042C328.505 315.042 357.667 301.604 383.473 279.034C409.28 256.542 431.68 224.92 445.46 188.576C461.615 145.811 459.757 105.134 440.299 76.9937C426.131 56.3331 403.809 45.0098 377.589 45.0098Z', + 'M409.306 70.0806C430.338 70.0806 448.144 79.1341 459.473 95.5904C475.189 118.314 476.634 151.356 463.473 186.203C452.531 215.04 434.441 241.453 412.531 260.566C390.88 279.498 367.138 289.944 345.641 289.944C343.37 289.944 341.486 289.867 339.68 289.661C321.228 287.984 305.564 278.518 295.577 262.99C280.893 240.395 279.112 207.869 290.699 173.77C310.854 114.755 361.925 70.0806 409.306 70.0806ZM409.306 67.5012C360.893 67.5012 308.79 112.795 288.273 172.971C276.428 207.766 278.261 241.092 293.409 264.409C303.835 280.607 320.196 290.486 339.448 292.24C341.486 292.446 343.525 292.524 345.641 292.524C368.402 292.524 392.738 281.329 414.235 262.5C435.731 243.748 454.415 217.413 465.899 187.106C479.37 151.459 477.822 117.566 461.589 94.1201C449.77 76.9416 431.164 67.5012 409.306 67.5012Z', + 'M441.047 92.5986C457.693 92.5986 471.783 99.7692 480.764 112.795C493.228 130.85 494.389 157.082 483.912 184.81C475.189 207.818 460.764 228.866 443.293 244.084C426.08 259.147 407.189 267.453 390.131 267.453C388.351 267.453 386.854 267.375 385.409 267.246C370.802 265.905 358.415 258.425 350.519 246.147C338.854 228.195 337.46 202.35 346.673 175.241C362.699 128.219 403.396 92.5986 441.047 92.5986ZM441.047 90.0193C402.312 90.0193 360.635 126.259 344.222 174.39C334.751 202.221 336.222 228.892 348.325 247.54C356.66 260.514 369.744 268.381 385.151 269.8C386.777 269.981 388.428 270.032 390.106 270.032C408.325 270.032 427.783 261.082 444.97 246.018C462.157 231.032 477.099 209.959 486.312 185.713C497.073 157.186 495.835 130.077 482.88 111.325C473.409 97.551 458.518 90.0193 441.047 90.0193Z', + 'M472.789 115.091C485.047 115.091 495.447 120.378 502.054 129.948C511.292 143.309 512.118 162.783 504.35 183.366C497.847 200.519 487.086 216.201 474.054 227.576C461.254 238.77 447.241 244.935 434.596 244.935C433.305 244.935 432.196 244.884 431.112 244.78C420.35 243.8 411.241 238.28 405.434 229.253C396.789 215.943 395.757 196.779 402.622 176.634C414.518 141.658 444.841 115.091 472.789 115.091ZM472.789 112.511C443.731 112.511 412.48 139.698 400.17 175.783C393.073 196.675 394.157 216.665 403.267 230.646C409.538 240.37 419.344 246.276 430.88 247.334C432.118 247.463 433.331 247.514 434.596 247.514C448.247 247.514 462.854 240.782 475.757 229.511C488.66 218.265 499.86 202.453 506.75 184.269C514.828 162.886 513.899 142.561 504.17 128.477C497.047 118.186 485.899 112.511 472.789 112.511Z', + 'M504.505 137.583C512.402 137.583 519.06 140.961 523.292 147.126C529.279 155.793 529.796 168.483 524.712 181.947C520.428 193.245 513.331 203.588 504.763 211.068C496.376 218.394 487.241 222.443 479.034 222.443C478.208 222.443 477.512 222.417 476.789 222.34C469.899 221.721 464.041 218.161 460.299 212.384C454.673 203.743 454.028 191.233 458.518 178.053C466.363 155.122 486.286 137.583 504.505 137.583ZM504.505 135.003C485.125 135.003 464.299 153.136 456.092 177.201C451.344 191.13 452.092 204.439 458.157 213.777C462.338 220.251 468.867 224.197 476.557 224.919C477.383 224.997 478.183 225.023 479.034 225.023C488.144 225.023 497.873 220.534 506.466 213.029C515.06 205.523 522.544 194.999 527.137 182.876C532.531 168.612 531.912 155.071 525.408 145.682C520.686 138.795 513.254 135.003 504.505 135.003Z', +] + +const VALIDATOR_PATHS = [ + 'M64.3343 137.583C72.2311 137.583 78.8892 140.961 83.1214 147.126C89.1085 155.793 89.6246 168.483 84.5408 181.947C80.2569 193.245 73.1601 203.588 64.5924 211.068C56.2053 218.394 47.0698 222.443 38.8634 222.443C38.0634 222.443 37.315 222.417 36.644 222.34C29.7279 221.669 23.8699 218.136 20.1537 212.384C14.5537 203.717 13.8828 191.181 18.3731 178.027C26.2182 154.967 45.986 137.583 64.3343 137.583ZM64.3343 135.003C44.9537 135.003 24.1279 153.11 15.9215 177.201C11.1731 191.13 11.9473 204.439 17.986 213.777C22.1666 220.251 28.6957 224.146 36.386 224.919C37.2118 224.997 38.0118 225.023 38.8634 225.023C47.9731 225.023 57.7021 220.534 66.2956 213.029C74.8892 205.523 82.373 194.999 86.9666 182.876C92.3601 168.612 91.7408 155.071 85.2375 145.682C80.515 138.795 73.0827 135.003 64.3343 135.003Z', + 'M105.96 115.091C118.218 115.091 128.618 120.378 135.225 129.948C144.463 143.309 145.289 162.783 137.521 183.366C131.018 200.519 120.257 216.201 107.225 227.576C94.4247 238.77 80.4118 244.935 67.7666 244.935C66.5279 244.935 65.3924 244.884 64.2828 244.78C53.4957 243.723 44.386 238.203 38.5796 229.253C29.9602 215.917 28.928 196.727 35.7667 176.608C47.7667 141.529 77.9344 115.091 105.96 115.091ZM105.96 112.511C76.9021 112.511 45.6505 139.698 33.3409 175.783C26.2441 196.675 27.3538 216.64 36.4376 230.646C42.7086 240.344 52.515 246.225 64.0505 247.334C65.2892 247.463 66.5021 247.514 67.7666 247.514C81.4182 247.514 96.0247 240.782 108.928 229.511C121.831 218.265 133.031 202.453 139.921 184.269C147.999 162.886 147.07 142.561 137.341 128.477C130.244 118.186 119.07 112.511 105.96 112.511Z', + 'M147.612 92.5986C164.257 92.5986 178.347 99.7692 187.328 112.795C199.792 130.85 200.954 157.082 190.476 184.81C181.754 207.818 167.328 228.866 149.857 244.084C132.644 259.147 113.754 267.453 96.6956 267.453C94.9924 267.453 93.444 267.375 91.973 267.246C77.3408 265.828 64.9537 258.322 57.0569 246.147C45.4182 228.144 43.9989 202.298 53.2118 175.215C69.2892 128.116 109.857 92.5986 147.612 92.5986ZM147.612 90.0193C108.876 90.0193 67.1989 126.259 50.786 174.39C41.315 202.221 42.8118 228.866 54.8892 247.54C63.2505 260.489 76.3343 268.304 91.715 269.8C93.3408 269.955 94.9924 270.032 96.6698 270.032C114.889 270.032 134.347 261.082 151.534 246.018C168.747 231.032 183.689 209.933 192.876 185.713C203.637 157.186 202.399 130.077 189.444 111.325C179.973 97.551 165.083 90.0193 147.612 90.0193Z', + 'M189.237 70.0808C210.27 70.0808 228.076 79.1343 239.405 95.5906C255.121 118.315 256.566 151.356 243.405 186.203C232.463 215.04 214.373 241.453 192.463 260.566C170.812 279.498 147.07 289.945 125.573 289.945C123.431 289.945 121.496 289.867 119.612 289.687C101.134 287.881 85.444 278.415 75.5085 263.016C60.8505 240.344 59.0698 207.818 70.6311 173.797C90.8117 114.678 141.805 70.0808 189.237 70.0808ZM189.237 67.5015C140.825 67.5015 88.7214 112.795 68.2053 172.971C56.3602 207.767 58.244 241.066 73.3408 264.409C83.8182 280.582 100.128 290.357 119.379 292.24C121.418 292.447 123.457 292.524 125.573 292.524C148.334 292.524 172.67 281.33 194.166 262.5C215.663 243.748 234.347 217.413 245.831 187.106C259.302 151.459 257.753 117.567 241.521 94.1204C229.702 76.9419 211.095 67.5015 189.237 67.5015Z', + 'M230.863 47.5891C256.257 47.5891 277.805 58.5514 291.508 78.4382C310.45 105.857 312.231 145.656 296.386 187.648C283.224 222.34 261.47 254.092 235.095 277.074C209.031 299.875 180.386 312.437 154.502 312.437C151.921 312.437 149.573 312.334 147.302 312.102C124.954 309.935 106.012 298.483 93.986 279.885C76.3086 252.544 74.1408 213.364 88.0763 172.378C112.334 101.24 173.728 47.5891 230.863 47.5891ZM230.863 45.0098C172.747 45.0098 110.244 99.3825 85.6247 171.579C71.4053 213.338 73.6763 253.292 91.7924 281.304C104.36 300.727 123.947 312.437 147.018 314.707C149.47 314.939 151.921 315.042 154.45 315.042C181.779 315.042 210.941 301.604 236.747 279.034C262.554 256.542 284.954 224.92 298.734 188.576C314.889 145.811 313.031 105.134 293.573 76.9937C279.431 56.3331 257.083 45.0098 230.863 45.0098Z', + 'M272.515 25.0715C302.296 25.0715 327.534 37.9167 343.612 61.234C365.805 93.3469 367.895 139.93 349.341 189.041C333.96 229.588 308.541 266.679 277.728 293.556C247.225 320.227 213.728 334.929 183.405 334.929C180.36 334.929 177.625 334.8 174.967 334.542C148.747 331.988 126.554 318.576 112.438 296.755C91.7409 264.745 89.2119 218.884 105.522 170.96C133.883 87.8013 205.65 25.0715 272.515 25.0715ZM272.515 22.4922C204.721 22.4922 131.792 85.9184 103.07 170.134C86.5022 218.858 89.1344 265.467 110.27 298.147C124.928 320.794 147.792 334.49 174.709 337.096C177.573 337.379 180.438 337.482 183.38 337.482C215.25 337.482 249.289 321.8 279.405 295.465C309.496 269.233 335.663 232.348 351.741 189.918C370.579 140.007 368.412 92.5731 345.728 59.738C329.134 35.7243 303.096 22.4922 272.515 22.4922Z', +] diff --git a/packages/web/src/dev/bakeoff.png b/packages/web/src/dev/bakeoff.png new file mode 100644 index 0000000000000000000000000000000000000000..36a420f05469283969b70b9ae3c08c8bbfa45427 GIT binary patch literal 7723 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 literal 0 HcmV?d00001 diff --git a/packages/web/src/dev/cakeLayering.jpg b/packages/web/src/dev/cakeLayering.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809da94e144b2406551ca8bafa322834116a07af GIT binary patch literal 25460 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 GJ@bD^LUD2c literal 0 HcmV?d00001 diff --git a/packages/web/src/dev/cakeProtector.png b/packages/web/src/dev/cakeProtector.png new file mode 100644 index 0000000000000000000000000000000000000000..359c556e390919c26a723180bbd3cf1d5385c9e9 GIT binary patch literal 4043 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 literal 0 HcmV?d00001 diff --git a/packages/web/src/dev/chefs.png b/packages/web/src/dev/chefs.png new file mode 100644 index 0000000000000000000000000000000000000000..93e385769151efec103abf8443f454df556b053b GIT binary patch literal 53695 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 Q4*&oF07*qoM6N<$g3UHar~m)} literal 0 HcmV?d00001 diff --git a/packages/web/src/icons/blog-dark.png b/packages/web/src/icons/blog-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7a3e689557fce39681ef971c4e6749770e2a1b GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/packages/web/src/icons/documentation-dark.png b/packages/web/src/icons/documentation-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..dc466f0e426f35092259e3505e7fbcda6ce11cdf GIT binary patch literal 2108 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 literal 0 HcmV?d00001 diff --git a/packages/web/src/icons/download-dark.png b/packages/web/src/icons/download-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..850346807f4d48cdc77036e70c64a90405c56b3c GIT binary patch literal 1288 zcmV+j1^4=iP)<h;3K|Lk000e1NJLTq005u>005u}0{{R3yb+fl0000>P)t-s5)>98 zA|f?5I8snZU0z*qa&w4@ii~tWmzbHSsHd@#OuxXv)6>+{tXJaV;`sOT`paee&~y9P ziTvN7{N=Iz>cIZ;*8lkF|NsBfq%VX300ekRL_t(|+U?s5Z=)~_0N?<H(UBt$UitsO z^petUqhp;DoH)9}(zQ|#so(54kCrl%d9V|B0#D!xJc0iwP|VYym6A4;*3+C9a2~XL z4n5@poChU$Lk$Z(P)u6>9BL#6ic!hep%y~m?>rYH8E}H|{DoM+MN4Q56hLVD{By_> zr|%Y1V&JT#XDms9gY*t1(gB5*0Wl^6E-J+5F<~<jpT}IoXnazN6u<*M@F-+NKB?jZ z5Ba2=V*?NRpl!mae9#&*Dj#&c3kB-KKH!!i5I7$90S93ia6<4&9S?{w0Kr`n0u(4d z;A+Q+1|YbN8PNcY2wW5vaE=2UWZpou0>=WX%z>lK8@R~KfdeKm!Zd@Lz!)ou#`Hy4 zi)YjXM%c~h%z?Ng5O^|XR4oiWcQUdB;vbrj6NrE8RJcI&gZqSB;Rze4NroUCh}|OS zpKgtkWC+56$Snf>^bHK8sxTNh5mgurB<f)>P*7DE3Y=+XX*dvj9bT}3ny5vfKta_a zP~c3KKp=3USw-ML+#b;e9jM6?NCEUpAP`8^!cd@~YGEjFp-UhPh&c^Lxw#Ax=yAsk z4bb~W(Zs;P<PG${0W&c$;7;JA(~N(C(*jkr+mr>tCc$qlRuofo>fMYs5rG5I08F^$ z5A`KGGzI<^0(>rpbjhDL>;^$TxL52A-v<Rk1|eew;tGQQ>DD`A4Bv<N`QV!czN7oV zz&RLr%!l|PdbJNc=z{~NFyK+2$2UzX1UQ;>z!?Di^R&KACL!>*M*a>AUVlTs&{lq3 ztc6Jn{H4h6+YDlq*BAJ@lea*<7y{tSuROn&SdGSz0AC4hlN9gB>GKD^_yL^*-b$=y zW9WcC_j0xFX0Vzg7--9^eqKrRYz#TjEW1B(c1?0MCI{f|@0``e0^3}G&Nz=+uRpR^ zdYBedTVR(F@LSY5m3S{23#@a`V4Hge+j9*5%O!TeCKF)SiTyFSQ(|%LlLPx=FIW3O zn^&GbgRYuozw_erO4640LW(h1IwAiK+@ghh>1gAG0l9nUqInJM-JfxIaS80=*1h+3 zAU>Cv-+ZMYnr51B!pj!8=C2Zl2xyw(Nmy-wUBPfR58)H_O1Nx*%_e^Z#^&b0O2W5A z{0bE1-b9pqsp~gwP<{eeI*RYuT6`Dw9~oTdysImIiL|phwpr+_PvN7);<6o^w7VI> zi-+(5tWl;vyzLf$^uv7&y8M+5nh#+=cq_9N-hk`$f_eJH*s$JEw@lV0!`@e80M}-| z&D-ccoGt$<ya)2OALmRWK7<AKxe4je^pQhu@&w-ZU+DS6Ja+bN-3pU2FjAbr6ZmL> zuBk6Js=95Prmoy$({bL`wSB#=tEzHO7yD#iX|7j$k-M&{%F0D)pDt}D;sC|<>r!zj ziVKebYzu}KzEdTv#67R;4YDkXGDKaLT*PV;VMNdS&c*#rdfs(?XCFD|z5Sn_bNjEi y!QDmf%Ig~4wY3lSDsfITC-4NGz!Uhd0sjImK2tqV`hAH20000<MNUMnLSTaY^<~8X literal 0 HcmV?d00001 diff --git a/packages/web/src/icons/faucet-dark.png b/packages/web/src/icons/faucet-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..290c04094ed88dca076c8b0d7458f9205e2083be GIT binary patch literal 1709 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 Dv|<_b literal 0 HcmV?d00001 diff --git a/packages/web/src/layout/BookLayout.tsx b/packages/web/src/layout/BookLayout.tsx new file mode 100644 index 00000000000..f64abdc17a2 --- /dev/null +++ b/packages/web/src/layout/BookLayout.tsx @@ -0,0 +1,51 @@ +import * as React from 'react' +import { H3 } from 'src/fonts/Fonts' +import { Cell, GridRow, Spans } from 'src/layout/GridRow' +import { standardStyles } from 'src/styles' + +interface Props { + label: React.ReactNode + children: React.ReactNode + nativeID?: string + endBlock?: boolean + startBlock?: boolean + isWide?: boolean +} + +function BookLayout({ label, children, nativeID, endBlock, startBlock, isWide }: Props) { + const margins = { + desktop: [ + standardStyles.blockMarginTop, + startBlock && standardStyles.sectionMarginTop, + endBlock && standardStyles.sectionMarginBottom, + ], + tablet: [ + standardStyles.blockMarginTopTablet, + startBlock && standardStyles.sectionMarginTopTablet, + endBlock && standardStyles.sectionMarginBottomTablet, + ], + mobile: [ + standardStyles.blockMarginTopMobile, + startBlock && standardStyles.sectionMarginTopMobile, + endBlock && standardStyles.sectionMarginBottomMobile, + ], + } + + return ( + <GridRow + desktopStyle={margins.desktop} + tabletStyle={margins.tablet} + mobileStyle={margins.mobile} + nativeID={nativeID} + > + <Cell span={Spans.fourth}> + <H3>{label}</H3> + </Cell> + <Cell tabletSpan={Spans.three4th} span={isWide ? Spans.three4th : Spans.half}> + {children} + </Cell> + </GridRow> + ) +} + +export default React.memo(BookLayout) diff --git a/packages/web/src/react-native-aug.d.ts b/packages/web/src/react-native-aug.d.ts index 3bea4563d0f..e32a821e364 100644 --- a/packages/web/src/react-native-aug.d.ts +++ b/packages/web/src/react-native-aug.d.ts @@ -26,6 +26,7 @@ declare module 'react-native' { animationIterationCount?: string | number animationKeyframes?: unknown[] animationTimingFunction?: string + scrollPadding?: number cursor?: string display?: 'none' | 'flex' | 'inline' | 'inline-flex' fill?: string diff --git a/packages/web/src/shared/Button.3.tsx b/packages/web/src/shared/Button.3.tsx index f300c396094..a85f2dac282 100644 --- a/packages/web/src/shared/Button.3.tsx +++ b/packages/web/src/shared/Button.3.tsx @@ -473,7 +473,7 @@ const baseStyles = StyleSheet.create({ base: { justifyContent: 'center', flexGrow: 0, - width: 'max-content', + width: 'fit-content', opacity: 1, }, verticallyAlign: { diff --git a/packages/web/src/shared/ConnectionFooter.tsx b/packages/web/src/shared/ConnectionFooter.tsx new file mode 100644 index 00000000000..f2efc1be9ba --- /dev/null +++ b/packages/web/src/shared/ConnectionFooter.tsx @@ -0,0 +1,82 @@ +import { Image, StyleSheet, Text, View } from 'react-native' +import { H3 } from 'src/fonts/Fonts' +import EmailForm, { After } from 'src/forms/EmailForm' +import { I18nProps, NameSpaces, withNamespaces } from 'src/i18n' +import BookLayout from 'src/layout/BookLayout' +import { GridRow } from 'src/layout/GridRow' +import Button, { BTN } from 'src/shared/Button.3' +import { + DiscordChannel, + EventsChannel, + ForumChannel, + GitHubChannel, + TwitterChannel, +} from 'src/shared/SocialChannels' +import { colors, fonts, standardStyles } from 'src/styles' + +interface Props { + includeDividerLine: boolean +} + +function ConnectionFooter({ t, includeDividerLine }: I18nProps & Props) { + return ( + <> + <GridRow + desktopStyle={standardStyles.blockMargin} + tabletStyle={standardStyles.blockMarginTablet} + mobileStyle={standardStyles.blockMarginMobile} + > + {includeDividerLine && <View style={[styles.line]} />} + </GridRow> + <BookLayout label={t('conductLabel')}> + <Text style={[fonts.p, standardStyles.elementalMarginBottom]}>{t('conductText')}</Text> + <Button kind={BTN.PRIMARY} text={t('conductBtn')} /> + </BookLayout> + <BookLayout label={t('socialLabel')} isWide={true}> + <View style={styles.engageArea}> + <TwitterChannel isDarkMode={false} /> + <GitHubChannel isDarkMode={false} /> + <DiscordChannel isDarkMode={false} /> + <ForumChannel isDarkMode={false} /> + <EventsChannel isDarkMode={false} /> + </View> + <View> + <Image source={{ uri: require('src/dev/devNews.png') }} style={styles.emailLogo} /> + <View style={styles.form}> + <H3 style={styles.formTitle}>{t('stayConnected')}</H3> + <Text style={[fonts.p, standardStyles.elementalMarginBottom]}> + {t('receiveUpdates')} + </Text> + <EmailForm + submitText={t('signUp')} + route={'/contacts'} + whenComplete={<After t={t} />} + isDarkMode={false} + /> + </View> + </View> + </BookLayout> + </> + ) +} + +const styles = StyleSheet.create({ + line: { + height: 1, + width: '100%', + backgroundColor: colors.gray, + }, + engageArea: { + flexDirection: 'row', + flexWrap: 'wrap', + }, + form: { + maxWidth: 475, + }, + formTitle: { + marginBottom: 10, + }, + emailLogo: { width: 50, height: 50, marginVertical: 10 }, +}) + +export default withNamespaces(NameSpaces.community)(ConnectionFooter) diff --git a/packages/web/src/shared/SocialChannels.tsx b/packages/web/src/shared/SocialChannels.tsx index 85e31d84398..616b3e7d465 100644 --- a/packages/web/src/shared/SocialChannels.tsx +++ b/packages/web/src/shared/SocialChannels.tsx @@ -19,21 +19,29 @@ interface ChannelProps { link: string } -interface DarkMode { +interface ExternalChannelProps { isDarkMode: boolean + alignCenter?: boolean } -export const Channel = memo(function _Channel(props: ChannelProps & DarkMode) { +export const Channel = memo(function _Channel(props: ChannelProps & ExternalChannelProps) { const openExternalLinkInNewTab = props.link.includes('//') ? '_blank' : undefined return ( <Fade bottom={true} distance="20px" delay={200}> - <View style={[standardStyles.centered, styles.channelContainer]}> + <View + style={[ + props.alignCenter && standardStyles.centered, + props.alignCenter ? styles.channelContainer : styles.channelContainerLeft, + ]} + > <a href={props.link} target={openExternalLinkInNewTab}> - <View style={[standardStyles.centered, styles.icon]}>{props.icon}</View> + <View style={[props.alignCenter && standardStyles.centered, styles.icon]}> + {props.icon} + </View> <Text style={[ fonts.h5, - textStyles.center, + props.alignCenter && textStyles.center, styles.channelTitle, props.isDarkMode && textStyles.invert, ]} @@ -41,7 +49,13 @@ export const Channel = memo(function _Channel(props: ChannelProps & DarkMode) { {props.title} </Text> </a> - <Text style={[fonts.legal, textStyles.center, props.isDarkMode && textStyles.invert]}> + <Text + style={[ + fonts.legal, + props.alignCenter && textStyles.center, + props.isDarkMode && textStyles.invert, + ]} + > {props.text} </Text> </View> @@ -59,10 +73,11 @@ export function SocialLinks({ children }) { ) } -export function TwitterChannel({ isDarkMode }: DarkMode) { +export function TwitterChannel({ alignCenter, isDarkMode }: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'Twitter'} link={'//twitter.com/@celoDevs'} icon={<TwitterLogo height={40} color={isDarkMode ? colors.white : colors.dark} />} @@ -88,10 +103,14 @@ export function TwitterChannel({ isDarkMode }: DarkMode) { ) } -export const GitHubChannel = memo(function _GitHubChannel({ isDarkMode }: DarkMode) { +export const GitHubChannel = memo(function _GitHubChannel({ + alignCenter, + isDarkMode, +}: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'GitHub'} link={CeloLinks.gitHub} icon={<Octocat size={41} color={isDarkMode ? colors.white : colors.dark} />} @@ -100,22 +119,30 @@ export const GitHubChannel = memo(function _GitHubChannel({ isDarkMode }: DarkMo ) }) -export const DiscordChannel = memo(function _DiscordChannel({ isDarkMode }: DarkMode) { +export const DiscordChannel = memo(function _DiscordChannel({ + alignCenter, + isDarkMode, +}: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'Discord'} link={CeloLinks.discord} icon={<Discord size={40} color={isDarkMode ? colors.white : colors.dark} />} - text={'Collaborate and get \n developer support'} + text={'Collaborate and get\ndeveloper support'} /> ) }) -export const LinkedInChannel = memo(function _LinkedInChannel({ isDarkMode }: DarkMode) { +export const LinkedInChannel = memo(function _LinkedInChannel({ + isDarkMode, + alignCenter, +}: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'LinkedIn'} link={CeloLinks.linkedIn} icon={<LinkedIn size={40} color={isDarkMode ? colors.white : colors.dark} />} @@ -124,10 +151,14 @@ export const LinkedInChannel = memo(function _LinkedInChannel({ isDarkMode }: Da ) }) -export const ForumChannel = memo(function _ForumChannel({ isDarkMode }: DarkMode) { +export const ForumChannel = memo(function _ForumChannel({ + alignCenter, + isDarkMode, +}: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'Forum'} link={CeloLinks.discourse} icon={<Discourse size={40} color={isDarkMode ? colors.white : colors.dark} />} @@ -136,10 +167,14 @@ export const ForumChannel = memo(function _ForumChannel({ isDarkMode }: DarkMode ) }) -export const EventsChannel = memo(function _EventsChannel({ isDarkMode }: DarkMode) { +export const EventsChannel = memo(function _EventsChannel({ + alignCenter, + isDarkMode, +}: ExternalChannelProps) { return ( <Channel isDarkMode={isDarkMode} + alignCenter={alignCenter} title={'Events'} link={menuItems.COMMUNITY.link} icon={<Image resizeMode="contain" source={eventsImg} style={styles.image} />} @@ -153,6 +188,11 @@ const styles = StyleSheet.create({ width: 180, margin: 40, }, + channelContainerLeft: { + width: 180, + marginBottom: 60, + marginRight: 60, + }, channelTitle: { marginVertical: 15, }, diff --git a/packages/web/src/shared/menu-items.ts b/packages/web/src/shared/menu-items.ts index b5d3190d7ee..5d4186e5cd0 100644 --- a/packages/web/src/shared/menu-items.ts +++ b/packages/web/src/shared/menu-items.ts @@ -68,6 +68,7 @@ export enum CeloLinks { privacyDocs = 'https://docs.celo.org/celo-codebase/protocol/privacy', tutorial = 'https://docs.celo.org/getting-started/faucet#creating-an-empty-account-with-the-celo-client', buildWalletDocs = 'https://docs.celo.org/celo-codebase/wallet/intro', + stakeOffTerms = '/TODO', } export const languageOptions = { diff --git a/packages/web/static/locales/en/community.json b/packages/web/static/locales/en/community.json index fccc20b8128..7c8006ff6d1 100644 --- a/packages/web/static/locales/en/community.json +++ b/packages/web/static/locales/en/community.json @@ -147,5 +147,10 @@ "stayConnectedThanks": "Thanks for joining the Celo community, expect our newsletter soon.", "readMoreFromOurBlog": "Read more on our blog", "receiveUpdates": "Receive the latest updates to your inbox", - "signUp": "Sign Up" + "signUp": "Sign Up", + "conductBtn": "Read Document", + "conductLabel": "Code of Conduct", + "conductText": + "Shared norms and behaviors are the foundation of a beautiful community. Please read and respect our code of conduct.", + "socialLabel": "Engage" } diff --git a/packages/web/static/locales/en/dev.json b/packages/web/static/locales/en/dev.json index 51b1fe521ed..d3fc17153f4 100644 --- a/packages/web/static/locales/en/dev.json +++ b/packages/web/static/locales/en/dev.json @@ -1,18 +1,96 @@ { + "aboutTheChallenge": "About the Challenge", + "aboutChallengeText": + "We're looking for node operators and admins who can help develop the Celo menu. Spin up a validator or full node, build operational experience, and help the community prepare for opening night.", + "aboutTheChallengeButton": "Get Involved", + "expandLeaderboard": "Expand Leaderboard", + "makeWithCelo": "Build Celo", + "makeWithCeloSubtitle": "Get a taste of Baklava, Celo’s incentivized testnet", + "greatStakeOff": "The Great Celo\nStake Off", + "greatStakeOffSubtitle": "Win prizes by operating and hardening\nthe Baklava Testnet", + "purposeTitle": "Purpose", + "purposeText": + "Learn how to run a node on Celo’s peer-to-peer network and win up to <0>2 million Celo Gold in rewards.</0>*", + "purposeAsterisk": "* subject to <0>Terms and Conditions</0>", + "challengeTitle": "The Challenge", + "challengeText": + "Let the staking season commence! Starting December 4th, all chefs, bakers, and validators are invited to compete for the ultimate glory: honor, food, and Celo Gold.", + "whoTitle": "Who", + "whoText": + "If you have a technical background and you’re interested in open source, security, or building & operating infrastructure, you’d make a perfect Celo validator!", + "challengeBtnText": "Join the Stake Off", "buildCoverTitle": "Get a Taste of Alfajores", "buildCoverSubtitle": "Developer resources for the Celo Protocol and Celo Wallet", "viewGitHub": "View on Github", "getStarted": "Get Wallet", "seeTutorial": "See Tutorial", - "featureTitle": "Celo Platform Features", + "featureTitle": "Platform Features", "techTitle": "Full Stack Approach", "learnMore": "Learn More", "readMore": "Read More", "installWallet": "Install Wallet", "seeCode": "See Code", "celoStack": "The Celo Stack", + "stackSubtitle": "Full Stack Approach", + "stackTitle": "Celo Layers of Technology", + "stackDescription": "Each layer of the technical stack is designed to meet mobile user needs.", "exploreCLI": "Explore the Celo CLI", "fullStackText": "Each layer of the technical stack is designed to meet mobile user needs.", + "engage": { + "mainTitle": "Make Celo your own", + "topTitle": "Engage with Celo", + "contributeTitle": "Contribute To Celo", + "contributeText": + "There are a variety of resources to support contributions to Celo, including: grants, security bounties, an Ecosystem Fund, fellowships, and more.", + "contributeBtn": "Get Involved", + "validators": { + "noun": "For Validators and Full Nodes", + "verb": "Operate Celo", + "network": "Baklava Testnet", + "caption": + "Participate in testing and hardening the Celo Protocol.\nDeploy a Full Node or Validator and win prizes.", + "primaryAction": "Register", + "secondaryAction": "Start Validating" + }, + "developers": { + "noun": "For Developers", + "verb": "Extend & Enrich the Ecosystem", + "network": "Alfajores Testnet", + "caption": "Try out the Celo Protocol and Celo Wallet.\nBuild apps for the Celo platform.", + "primaryAction": "Get Wallet", + "secondaryAction": "Explore Celo CLI" + }, + "secure": { + "title": "Strengthen Celo", + "copy": "Make Celo more secure and earn money by participating in Celo’s Bug Bounty Program", + "btnText": "Learn More" + }, + "improve": { + "title": "Advance Celo", + "copy": "Get funding to improve Celo through Celo Grants", + "btnText": "View Grants" + }, + "tutorial": { + "title": "Tutorial", + "copy": "Deploy Celo blockchain software and connect to Baklava", + "btnText": "Read Tutorial" + }, + "blog": { + "title": "Technical Blog", + "copy": "Learn about Proof of Stake, validating and incentives in the Celo Protocol", + "btnText": "Read Blog" + }, + "faucet": { + "title": "Add Alfajores Funds", + "copy": "Top up your wallet on an existing Testnet account", + "btnText": "Get Funds" + }, + "docs": { + "title": "Documentation", + "copy": "Learn about the technology behind the Celo Protocol & Celo Wallet", + "btnText": "Read Documentation" + } + }, "coverAction": { "docs": { "title": "Documentation", @@ -93,5 +171,8 @@ "latestUpdates": "Receive the latest updates to your inbox", "signUp": "Sign Up", "signUpThanks": "Thank you for signing up" - } + }, + "stackBrowseTitle": "Browse the Code", + "stackBrowseCopy": "Explore and contribute to the Celo codebase", + "stackBrowseButton": "View On Github" } diff --git a/yarn.lock b/yarn.lock index 2e4b873d4d3..6d1170a3733 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,18 @@ # yarn lockfile v1 -"@0x/assert@^2.0.10", "@0x/assert@^2.1.5": +"@0x/assert@^2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-2.0.10.tgz#e1cfc7142b5dd7ee6510a676703935cf8ffd432e" + integrity sha512-tM3j5aZnJGTMr+7OAF61gmflrgEpUkp1LHNsnIx5VnVG+X7JzwV87O44PU9bALVQI1ufYvAUwhIkmK8jbR5Agw== + dependencies: + "@0x/json-schemas" "^3.0.10" + "@0x/typescript-typings" "^4.2.2" + "@0x/utils" "^4.3.3" + lodash "^4.17.11" + valid-url "^1.0.9" + +"@0x/assert@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-2.1.5.tgz#f29c7cb243507379242b608e904de9f232cb98ce" integrity sha512-5hnawNxXq4bB5A1QTNrLIjatE+DBGEy/KyaST5Ghu5Mj1N6ot2WpnyE9P1NZmnXPy+jBjZ/mHMRfoVx3Sr9UWw== @@ -28,6 +39,16 @@ ethereum-types "^2.1.5" lodash "^4.17.11" +"@0x/json-schemas@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-3.0.10.tgz#e15ea419ffb5af81f7eff7f6b3ac7602ca0b6957" + integrity sha512-RHYIaxf8C7GO/6VViD8zzRfs1B/i7P5vpCgPk8VR+aVDJXtceF9Nn72KiHeiHU9REUxMWgI3fzhYqTp5/CSbjA== + dependencies: + "@0x/typescript-typings" "^4.2.2" + "@types/node" "*" + jsonschema "^1.2.0" + lodash.values "^4.3.0" + "@0x/json-schemas@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-4.0.1.tgz#8cf679184f7adfeda005febe295346aa90720920" @@ -202,7 +223,16 @@ optionalDependencies: "@ledgerhq/hw-transport-node-hid" "^4.3.0" -"@0x/types@^2.2.2", "@0x/types@^2.4.2": +"@0x/types@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@0x/types/-/types-2.2.2.tgz#ac54c810384795e200384cb4a261152c0aea5040" + integrity sha512-25F3yjvdWGwiQ99CtFcvyL83PTR2fGQk7J1RzuGbqhu9LTdktjhbQl2/FUzPqbAnGXH47zh1ZZrrMSUVIW9SEA== + dependencies: + "@types/node" "*" + bignumber.js "~8.0.2" + ethereum-types "^2.1.2" + +"@0x/types@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@0x/types/-/types-2.4.2.tgz#1d6dd85d9ac20f267a1206b477caf55e90522879" integrity sha512-Thp9QoH8wZ8LPaOrUAY57u9AKheA0QwvuAinv8uPPlU2+vmIaJyZamMPg18/X21x0JHuuoJ4PWLqEXhMRJUQ5A== @@ -211,7 +241,18 @@ bignumber.js "~8.0.2" ethereum-types "^2.1.5" -"@0x/typescript-typings@^4.2.2", "@0x/typescript-typings@^4.2.5": +"@0x/typescript-typings@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-4.2.2.tgz#6c3e51e479c1ecf9e9b3eeae95a51a91be11570a" + integrity sha512-KKioCi4rLOiC62DF8mqBgN639DdGcJllW7OSPi6gWG4w2JI0mvH6KpRA7wGS9fyIpupjpKTIvz6ktZBaG+DrWg== + dependencies: + "@types/bn.js" "^4.11.0" + "@types/react" "*" + bignumber.js "~8.0.2" + ethereum-types "^2.1.2" + popper.js "1.14.3" + +"@0x/typescript-typings@^4.2.5": version "4.2.5" resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-4.2.5.tgz#3ceebadd60377abc6e4d2e86c2585ddaf857abef" integrity sha512-mCuOVKpgQkDvlcP6ZnD2kk+vt8OH6xa6uTxPgBZci2rnLiJLKMk1bsHLvFcbwNO5J/tO8DpZnHEwSx2FKaCviw== @@ -222,7 +263,26 @@ ethereum-types "^2.1.5" popper.js "1.14.3" -"@0x/utils@^4.3.3", "@0x/utils@^4.5.1": +"@0x/utils@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-4.3.3.tgz#56ab7b42a2a938057bf191e83054aa75a25a18f5" + integrity sha512-gAFKM8kV5I4A6mpn4+nl9pkstyDiFfQBGz4JBI6ES7s/HRetenVurFN8v1EpEF4N/SOtTzqhGerDUVVtrM3YSQ== + dependencies: + "@0x/types" "^2.2.2" + "@0x/typescript-typings" "^4.2.2" + "@types/node" "*" + abortcontroller-polyfill "^1.1.9" + bignumber.js "~8.0.2" + chalk "^2.3.0" + detect-node "2.0.3" + ethereum-types "^2.1.2" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + isomorphic-fetch "2.2.1" + js-sha3 "^0.7.0" + lodash "^4.17.11" + +"@0x/utils@^4.5.1": version "4.5.1" resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-4.5.1.tgz#0a5e474eefa5676f22ebdf0cf1e4bef375f26146" integrity sha512-rWFY/abdXPEMf3Ulq6sbVfahjuopiY/ppGTmGGHlhvoQkS7Tl6hEClwof6ISwn3R4V9oIzJayi2FNOP2qoJmNw== @@ -241,7 +301,7 @@ js-sha3 "^0.7.0" lodash "^4.17.11" -"@0x/web3-wrapper@^6.0.12", "@0x/web3-wrapper@^6.0.6": +"@0x/web3-wrapper@^6.0.12": version "6.0.12" resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-6.0.12.tgz#979731dd87bc99d58e3d62a5c471cb1129017393" integrity sha512-sTRyb5oxXfkY2Wln9hpF2uFOAJeaERhevwKwjcVdjIfHU4gm+JoYgcIJsMhnO/L4LtRcPlMVplvC6V49eKzVRw== @@ -255,6 +315,20 @@ ethers "~4.0.4" lodash "^4.17.11" +"@0x/web3-wrapper@^6.0.6": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-6.0.6.tgz#bf2b07ba9f309e4c7a25dd1b25b2e9de67d0afc9" + integrity sha512-cmDHgYnPGNs6ItMw5h+hLe3Cvqaj6V1RY14ZMCc87L7PrwUFQLnrmSfKcsjaqsNDEmbjLf2dNL25DVu6FN/uyw== + dependencies: + "@0x/assert" "^2.0.10" + "@0x/json-schemas" "^3.0.10" + "@0x/typescript-typings" "^4.2.2" + "@0x/utils" "^4.3.3" + ethereum-types "^2.1.2" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + lodash "^4.17.11" + "@apollographql/apollo-tools@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.3.3.tgz#7ec7af07021336ab6947e21e290dd06cb705233e" @@ -307,14 +381,21 @@ imurmurhash "^0.1.4" slide "^1.1.5" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/code-frame@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@7.1.2": +"@babel/core@7.1.2", "@babel/core@^7.0.0": version "7.1.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" integrity sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw== @@ -334,7 +415,47 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.6.2": +"@babel/core@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.6.2": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.3.tgz#44de824e89eaa089bb12da7337bc9bdff2ab68f9" integrity sha512-QfQ5jTBgXLzJuo7Mo8bZK/ePywmgNRgk/UQykiKwEtZPiFIn8ZqE6jB+AnD1hbB1S2xQyL4//it5vuAUOVAMTw== @@ -354,7 +475,73 @@ semver "^5.4.1" source-map "^0.6.1" -"@babel/generator@^7.0.0", "@babel/generator@^7.1.2", "@babel/generator@^7.6.3": +"@babel/generator@^7.0.0", "@babel/generator@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.2.tgz#fde75c072575ce7abbd97322e8fef5bae67e4630" + integrity sha512-70A9HWLS/1RHk3Ck8tNHKxOoKQuSKocYgwDN85Pyl/RBduss6AKxUR7RIZ/lzduQMSYfWEM4DDBu6A+XGbkFig== + dependencies: + "@babel/types" "^7.1.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.5.tgz#615f064d13d95f8f9157c7261f68eddf32ec15b3" + integrity sha512-IO31r62xfMI+wBJVmgx0JR9ZOHty8HkoYpQAjRWUGG9vykBTlGHdArZ8zoFtpUu2gs17K7qTl/TtPpiSi6t+MA== + dependencies: + "@babel/types" "^7.1.5" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== + dependencies: + "@babel/types" "^7.2.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.0.tgz#c230e79589ae7a729fd4631b9ded4dc220418196" + integrity sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ== + dependencies: + "@babel/types" "^7.4.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + dependencies: + "@babel/types" "^7.4.4" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" + integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== + dependencies: + "@babel/types" "^7.5.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.3.tgz#71d5375264f93ec7bac7d9f35a67067733f5578e" integrity sha512-hLhYbAb3pHwxjlijC4AQ7mqZdcoujiNaW7izCT04CIowHK8psN0IN8QjDv0iyFtycF5FowUOTwDloIheI25aMw== @@ -387,6 +574,24 @@ "@babel/types" "^7.0.0" esutils "^2.0.0" +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz#f308eabe0d44f451217853aedf4dea5f6fe3294f" + integrity sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.0" + "@babel/traverse" "^7.4.0" + "@babel/types" "^7.4.0" + "@babel/helper-call-delegate@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" @@ -408,6 +613,24 @@ "@babel/helper-replace-supers" "^7.5.5" "@babel/helper-split-export-declaration" "^7.4.4" +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-define-map@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz#cbfd8c1b2f12708e262c26f600cd16ed6a3bc6c9" + integrity sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.0" + lodash "^4.17.11" + "@babel/helper-define-map@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" @@ -441,6 +664,20 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz#25b621399ae229869329730a62015bbeb0a6fbd6" + integrity sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw== + dependencies: + "@babel/types" "^7.4.0" + "@babel/helper-hoist-variables@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" @@ -448,7 +685,14 @@ dependencies: "@babel/types" "^7.4.4" -"@babel/helper-member-expression-to-functions@^7.0.0", "@babel/helper-member-expression-to-functions@^7.5.5": +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== @@ -462,7 +706,19 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": +"@babel/helper-module-transforms@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-module-transforms@^7.4.4": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== @@ -486,7 +742,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-regex@^7.4.4": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== @@ -504,7 +767,27 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.5.5": +"@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz#4f56adb6aedcd449d2da9399c2dcf0545463b64c" + integrity sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.0" + "@babel/types" "^7.4.0" + +"@babel/helper-replace-supers@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== @@ -522,6 +805,20 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz#571bfd52701f492920d63b7f735030e9a3e10b55" + integrity sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw== + dependencies: + "@babel/types" "^7.4.0" + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -539,7 +836,34 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helpers@^7.1.2", "@babel/helpers@^7.6.2": +"@babel/helpers@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" + integrity sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.1.2" + +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helpers@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== @@ -557,7 +881,42 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.2", "@babel/parser@^7.2.0", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.2.tgz#85c5c47af6d244fab77bce6b9bd830e38c978409" + integrity sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ== + +"@babel/parser@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.5.tgz#20b7d5e7e1811ba996f8a868962ea7dd2bfcd2fc" + integrity sha512-WXKf5K5HT6X0kKiCOezJZFljsfxKV1FpU8Tf1A7ZpGvyd/Q4hlrJm2EwoH2onaUq3O4tLDp+4gk0hHPsMyxmOg== + +"@babel/parser@^7.2.0": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87" + integrity sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg== + +"@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== + +"@babel/parser@^7.4.0": + version "7.4.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.2.tgz#b4521a400cb5a871eab3890787b4bc1326d38d91" + integrity sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g== + +"@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + +"@babel/parser@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" + integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== + +"@babel/parser@^7.6.0", "@babel/parser@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.3.tgz#9eff8b9c3eeae16a74d8d4ff30da2bd0d6f0487e" integrity sha512-sUZdXlva1dt2Vw2RqbMkmfoImubO0D0gaCrNngV6Hi0DA4x3o4mlrq0tbfY0dZEUIccH8I6wQ4qgEtwcpOR6Qg== @@ -631,7 +990,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" -"@babel/plugin-proposal-object-rest-spread@7.0.0": +"@babel/plugin-proposal-object-rest-spread@7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== @@ -639,7 +998,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.0.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.5.5": +"@babel/plugin-proposal-object-rest-spread@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== @@ -647,7 +1006,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== @@ -663,7 +1030,16 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-chaining" "^7.0.0" -"@babel/plugin-proposal-unicode-property-regex@^7.0.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== @@ -693,14 +1069,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@7.0.0": +"@babel/plugin-syntax-dynamic-import@7.0.0", "@babel/plugin-syntax-dynamic-import@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": +"@babel/plugin-syntax-dynamic-import@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== @@ -714,7 +1090,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0": +"@babel/plugin-syntax-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" + integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== @@ -728,7 +1111,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": +"@babel/plugin-syntax-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" + integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== @@ -742,14 +1132,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.0.0", "@babel/plugin-syntax-optional-catch-binding@^7.2.0": +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== @@ -763,6 +1167,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-typescript@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0.tgz#90f4fe0a741ae9c0dcdc3017717c05a0cbbd5158" + integrity sha512-5fxmdqiAQVQTIS+KSvYeZuTt91wKtBTYi6JlIkvbQ6hmO+9fZE81ezxmMiFMIsxE7CdRSgzn7nQ1BChcvK9OpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz#55d240536bd314dcbbec70fd949c5cabaed1de29" @@ -770,14 +1181,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.1.0", "@babel/plugin-transform-async-to-generator@^7.5.0": +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" + integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-async-to-generator@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz#234fe3e458dce95865c0d152d256119b237834b0" + integrity sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-async-to-generator@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== @@ -786,14 +1222,29 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.5.5": +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" + integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-block-scoping@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" integrity sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg== @@ -801,7 +1252,35 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.1.0", "@babel/plugin-transform-classes@^7.5.5": +"@babel/plugin-transform-classes@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.0.tgz#e3428d3c8a3d01f33b10c529b998ba1707043d4d" + integrity sha512-XGg1Mhbw4LDmrO9rSTNe+uI79tQPdGs0YASlxgweYRLZqo/EQktjaOV4tchL/UZbM0F+/94uOipmdNGoaGOEYg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.0" + "@babel/helper-split-export-declaration" "^7.4.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== @@ -815,21 +1294,44 @@ "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.5.0": +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.2.tgz#5fa77d473f5a0a3f5266ad7ce2e8c995a164d60a" + integrity sha512-cvToXvp/OsYxtEn57XJu9BvsGSEYjAh9UeUuXpoi7x6QHB7YdWyQ4lRU/q0Fu1IJNT0o0u4FQ1DMQBzJ8/8vZg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.0.0", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== @@ -838,14 +1340,29 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.0.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.1.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" + integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.1.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== @@ -861,14 +1378,37 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.0.0" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.1.0", "@babel/plugin-transform-function-name@^7.4.4": +"@babel/plugin-transform-function-name@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" + integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== @@ -876,21 +1416,43 @@ "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.0.0.tgz#96a265bf61a9ed6f75c39db0c30d41ef7aabf072" + integrity sha512-kgAGWcjVdflNPSaRb9rDPdGJ9/gF80VPmxx80gdKz6NSofHvxA2LofECQ+7GrDVzzH8zBJzTn1xlV4xnmWj/nw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.1.0", "@babel/plugin-transform-modules-amd@^7.5.0": +"@babel/plugin-transform-modules-amd@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== @@ -899,7 +1461,7 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@7.1.0": +"@babel/plugin-transform-modules-commonjs@7.1.0", "@babel/plugin-transform-modules-commonjs@^7.0.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== @@ -908,7 +1470,16 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.4.4", "@babel/plugin-transform-modules-commonjs@^7.5.0": +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.0.tgz#3b8ec61714d3b75d20c5ccfa157f2c2e087fd4ca" + integrity sha512-iWKAooAkipG7g1IY0eah7SumzfnIT3WNhT4uYB2kIsvHnNSB6MDYVa5qyICSwaTBDBY2c4SnJ3JtEa6ltJd6Jw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-commonjs@^7.4.4", "@babel/plugin-transform-modules-commonjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== @@ -918,7 +1489,15 @@ "@babel/helper-simple-access" "^7.1.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.0.0", "@babel/plugin-transform-modules-systemjs@^7.5.0": +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-systemjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== @@ -942,7 +1521,14 @@ dependencies: regexp-tree "^0.1.6" -"@babel/plugin-transform-new-target@^7.0.0", "@babel/plugin-transform-new-target@^7.4.4": +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== @@ -956,7 +1542,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.1.0", "@babel/plugin-transform-object-super@^7.5.5": +"@babel/plugin-transform-object-super@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" + integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-object-super@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-object-super@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== @@ -964,7 +1566,25 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.5.5" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.1.0", "@babel/plugin-transform-parameters@^7.4.4": +"@babel/plugin-transform-parameters@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" + integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-parameters@^7.1.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.0.tgz#a1309426fac4eecd2a9439a4c8c35124a11a48a9" + integrity sha512-Xqv6d1X+doyiuCGDoVJFtlZx0onAX0tnc3dY8w71pv/O0dODAbusVv2Ale3cGOwfiyi895ivOBhYa9DhAM8dUA== + dependencies: + "@babel/helper-call-delegate" "^7.4.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== @@ -973,7 +1593,14 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0.tgz#0b95a91dbd1f0be5b5a99ed86571ef5b5ae77009" + integrity sha512-7HK6/jB4MLpwQUJQ3diaX0pbCRcoL9asJscQfU3D1HpDwYdrH6yAUKleUNFHFyGNYBI9UeJrS2Jpx2JhtPKu5g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== @@ -1012,7 +1639,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" -"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.4.5": +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-regenerator@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== @@ -1026,7 +1660,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@7.1.0": +"@babel/plugin-transform-runtime@7.1.0", "@babel/plugin-transform-runtime@^7.0.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== @@ -1036,7 +1670,7 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.5.5": +"@babel/plugin-transform-runtime@^7.5.5": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== @@ -1046,21 +1680,43 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.2.0": +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== @@ -1068,7 +1724,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.4.4": +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== @@ -1083,7 +1747,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.0.0", "@babel/plugin-transform-typescript@^7.1.0": +"@babel/plugin-transform-typescript@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.1.0.tgz#81e7b4be90e7317cbd04bf1163ebf06b2adee60b" + integrity sha512-TOTtVeT+fekAesiCHnPz+PSkYSdOSLyLn42DI45nxg6iCdlQY6LIj/tYqpMB0y+YicoTUiYiXqF8rG6SKfhw6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz#bce7c06300434de6a860ae8acf6a442ef74a99d1" integrity sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew== @@ -1091,7 +1763,16 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.4.4": +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== @@ -1243,39 +1924,168 @@ core-js "^2.5.7" regenerator-runtime "^0.12.0" -"@babel/runtime@7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3" - integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg== +"@babel/runtime@7.1.2", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3" + integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.3.1": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.3.4": + version "7.4.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.2.tgz#f5ab6897320f16decd855eed70b705908a313fe8" + integrity sha512-7Bl2rALb7HpvXFL7TETNzKSAeBVCPHELzc0C//9FCxN8nsiueWSJBqaF+2oIJScyILStASR/Cx5WMkXGYTiJFA== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" + integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@7.1.2", "@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/template@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" + integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2" + integrity sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/traverse@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.5.tgz#5aafca2039aa058c104cf2bfeb9fc4a857ccbca9" + integrity sha512-eU6XokWypl0MVJo+MTSPUtlfPePkrqsF26O+l1qFGlCKWwmiYAYy2Sy44Qw8m2u/LbPCsxYt90rghmqhYMGpPA== dependencies: - regenerator-runtime "^0.12.0" + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.5" + "@babel/types" "^7.1.5" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" - integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.2.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== dependencies: - regenerator-runtime "^0.13.2" + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" -"@babel/template@7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" - integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== +"@babel/traverse@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.0.tgz#14006967dd1d2b3494cdd650c686db9daf0ddada" + integrity sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.1.2" - "@babel/types" "^7.1.2" + "@babel/generator" "^7.4.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.0" + "@babel/parser" "^7.4.0" + "@babel/types" "^7.4.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" -"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.4.4", "@babel/template@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" - integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== +"@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/traverse@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" + integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.5" + "@babel/types" "^7.5.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": +"@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== @@ -1290,7 +2100,70 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0", "@babel/types@^7.6.3": +"@babel/types@^7.0.0", "@babel/types@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.2.tgz#183e7952cf6691628afdc2e2b90d03240bac80c0" + integrity sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@babel/types@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.5.tgz#12fe64e91a431234b7017b4227a78cc0eec4e081" + integrity sha512-sJeqa/d9eM/bax8Ivg+fXF7FpN3E/ZmTrWbkk6r+g7biVYfALMnLin4dKijsaqEhpd2xvOGfQTkQkD31YCVV4A== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@babel/types@^7.3.0": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" + integrity sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@babel/types@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c" + integrity sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@babel/types@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" + integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.6.0", "@babel/types@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== @@ -1726,6 +2599,23 @@ retry-request "^4.0.0" teeny-request "^5.2.1" +"@google-cloud/common@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.27.0.tgz#31dbd52d7472f2606df05b194887db2b595bdad5" + integrity sha512-lRA3RHjMNQODpobcHLK9qg4ebN+jjUl7y4ZbjHFM+FYzmZLJQL1LFCM0BJ1DAPyD14ScBZ8Zb2I48oOFVxfNvQ== + dependencies: + "@google-cloud/projectify" "^0.3.2" + "@google-cloud/promisify" "^0.3.0" + "@types/duplexify" "^3.5.0" + "@types/request" "^2.47.0" + arrify "^1.0.1" + duplexify "^3.6.0" + ent "^2.2.0" + extend "^3.0.1" + google-auth-library "^2.0.0" + pify "^4.0.0" + retry-request "^4.0.0" + "@google-cloud/common@^0.31.0": version "0.31.0" resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.31.0.tgz#51a82d681043e2718bd32708586d3131b019d7a8" @@ -1823,6 +2713,17 @@ yargs "^12.0.1" yargs-parser "10.1.0" +"@google-cloud/paginator@^0.1.0": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.1.2.tgz#a7e6579e43f153055b4c65035a6729490a611a60" + integrity sha512-XL09cuPSEPyyNifavxWJRYkUFr5zCJ9njcFjqc1AqSQ2QIKycwdTxOP/zHsAWj0xN3rw1ApevA8o+8VAD4R6hw== + dependencies: + arrify "^1.0.1" + extend "^3.0.1" + is "^3.2.1" + split-array-stream "^2.0.0" + stream-events "^1.0.4" + "@google-cloud/paginator@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.2.0.tgz#eab2e6aa4b81df7418f6c51e2071f64dab2c2fa5" @@ -1846,7 +2747,12 @@ resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-0.1.0.tgz#02ccda04b4413fa64f098fc93db51e95af5c855a" integrity sha512-nXt4AskYjmDLRIO+nquVVppjiLE5ficFRP3WF1JYtPnSRFRpuMusa1kysPsD/yOxt5NMmvlkUCkaFI4rHYeckQ== -"@google-cloud/projectify@^0.3.0", "@google-cloud/projectify@^0.3.2": +"@google-cloud/projectify@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.0.tgz#adb984ac61f7ec855558ef677621b2488c50d05d" + integrity sha512-ic3vU+rBLlQ9rU6vyMcQ/GoYQX9hP0P56jdbnSkGvXrVnO1DtYrkPV3Qg/NUrpAfKnmNC4hb0O/v2hCj8uGnbQ== + +"@google-cloud/projectify@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.2.tgz#ed54c98cae646dc03a742eac288184a13d33a4c2" integrity sha512-t1bs5gE105IpgikX7zPCJZzVyXM5xZ/1kJomUPim2E2pNp4OUUFNyvKm/T2aM6GBP2F30o8abCD+/wbOhHWYYA== @@ -1895,7 +2801,33 @@ p-defer "^1.0.0" protobufjs "^6.8.1" -"@google-cloud/storage@^2.3.3", "@google-cloud/storage@^2.4.3": +"@google-cloud/storage@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.3.3.tgz#e4e68056f734361ede3bf81233de89f2d3751673" + integrity sha512-CW5LvzompZqkXTEWNsr4yke/XD2mYvZeoVahehwSkqp9BY/EPIKvHrlJpRn2pNiZHKH3QsXdNr2GJHVdw/NMPg== + dependencies: + "@google-cloud/common" "^0.27.0" + "@google-cloud/paginator" "^0.1.0" + "@google-cloud/promisify" "^0.3.0" + arrify "^1.0.0" + async "^2.0.1" + compressible "^2.0.12" + concat-stream "^1.5.0" + duplexify "^3.5.0" + extend "^3.0.0" + gcs-resumable-upload "^0.13.0" + hash-stream-validation "^0.2.1" + mime "^2.2.0" + mime-types "^2.0.8" + once "^1.3.1" + pumpify "^1.5.1" + snakeize "^0.1.0" + stream-events "^1.0.1" + teeny-request "^3.11.3" + through2 "^3.0.0" + xdg-basedir "^3.0.0" + +"@google-cloud/storage@^2.4.3": version "2.4.3" resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.4.3.tgz#d52a1937f3ea0ad3e13e947fab6154c76ab0d4ca" integrity sha512-Ol0Ed1zYNYixq+wPPaFNIVjT5+KJldBI6vyRDXnrAu5Yu66PU4iMJvEztUVfckz6vsihwApBMeXxdDUyJzMM2w== @@ -1971,7 +2903,15 @@ lodash.camelcase "^4.3.0" protobufjs "^6.8.6" -"@grpc/proto-loader@^0.5.0", "@grpc/proto-loader@^0.5.1": +"@grpc/proto-loader@^0.5.0": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.1.tgz#48492b53cdda353110b51a4b02f465974729c76f" + integrity sha512-3y0FhacYAwWvyXshH18eDkUI40wT/uGio7MAegzY8lO5+wVsc19+1A7T0pPptae4kl7bdITL+0cHpnAPmryBjQ== + dependencies: + lodash.camelcase "^4.3.0" + protobufjs "^6.8.6" + +"@grpc/proto-loader@^0.5.1": version "0.5.2" resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.2.tgz#c84f83be962f518bc303ca2d5e6ef2239439786c" integrity sha512-eBKD/FPxQoY1x6QONW2nBd54QUEyzcFP9FenujmoeDPy1rutVSHki1s/wR68F6O1QfCNDx+ayBH1O2CVNMzyyw== @@ -2011,7 +2951,16 @@ dependencies: "@hapi/hoek" "8.x.x" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== + dependencies: + "@jest/source-map" "^24.3.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/console@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== @@ -2100,7 +3049,16 @@ source-map "^0.6.0" string-length "^2.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": +"@jest/source-map@^24.3.0": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" + integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/source-map@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== @@ -2939,7 +3897,15 @@ debug "^4.1.1" semver "^5.6.0" -"@oclif/config@^1", "@oclif/config@^1.12.12": +"@oclif/config@^1": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.13.0.tgz#fc2bd82a9cb30a73faf7d2aa5ae937c719492bd1" + integrity sha512-ttb4l85q7SBx+WlUJY4A9eXLgv4i7hGDNGaXnY9fDKrYD7PBMwNOQ3Ssn2YT2yARAjyOxVE/5LfcwhQGq4kzqg== + dependencies: + debug "^4.1.1" + tslib "^1.9.3" + +"@oclif/config@^1.12.12": version "1.13.2" resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.13.2.tgz#c1dc25296bf06c039fd5fb0b90e4132be2213b2a" integrity sha512-RUOKeuAaopo3zrA5hcgE0PT2lbAUT72+eJdqTlWyI9sbPrGHZgUwV+vrL6Qal7ywWYDkL0vrKd1YS4yXtKIDKw== @@ -2964,7 +3930,16 @@ resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.7.3", "@oclif/parser@^3.8.0": +"@oclif/parser@^3.7.3": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.1.tgz#3c842ef4a8ce3d1f5bcfa5938d3fbebf1c6a0618" + integrity sha512-0OavFuLj6FBTdZDD6DXdNqH4qdLFLQD/PKK1OvNZhUd4/5v/lp6Ftzilwmirf549naNHq0u15uk1YCBvym5tNQ== + dependencies: + "@oclif/linewrap" "^1.0.0" + chalk "^2.4.2" + tslib "^1.9.3" + +"@oclif/parser@^3.8.0": version "3.8.3" resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.3.tgz#717fbbe5bfafef4270224b8bd41a2d3c80b9554e" integrity sha512-zN+3oGuv9Lg8NjFvxZTDKFEmhAMfAvd/JWeQp3Ri8pDezoyJQi4OSHHLM8sdHjBh8sePewfWI7+fDUXdrVbrqg== @@ -3305,7 +4280,17 @@ dependencies: jstz "^2.0.0" -"@sentry/browser@^5.6.2", "@sentry/browser@^5.6.3": +"@sentry/browser@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.6.2.tgz#f39e95c3aff2d4b4fd5d0d4aa7192af73f20d24e" + integrity sha512-Nm/W/5ra6+OQCWQkdd86vHjcYUjHCVqCzQyPasd6HE7SNlWe5euGVfFfDuUFsiDrMAG5uKfGYw5u/AqoweiQkQ== + dependencies: + "@sentry/core" "5.6.2" + "@sentry/types" "5.6.1" + "@sentry/utils" "5.6.1" + tslib "^1.9.3" + +"@sentry/browser@^5.6.3": version "5.6.3" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.6.3.tgz#5cc37b0443eba55ad13c13d34d6b95ff30dfbfe3" integrity sha512-bP1LTbcKPOkkmfJOAM6c7WZ0Ov0ZEW6B9keVZ9wH9fw/lBPd9UyDMDCwJ+FAYKz9M9S5pxQeJ4Ebd7WUUrGVAQ== @@ -3689,7 +4674,14 @@ dependencies: "@types/node" "*" -"@types/bn.js@*", "@types/bn.js@^4.11.0", "@types/bn.js@^4.11.4": +"@types/bn.js@*", "@types/bn.js@^4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.0.tgz#401cb20874f0a7b8414e46308a99c449759b7de9" + integrity sha512-T/KbioxKE9JM4I91eTx977QEEla3rlD0etJqWL3uQhmZFrYmRoFGJcA68EIXG6Eyupu6eLj8V1cMwBUxwmtstQ== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.4": version "4.11.4" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.4.tgz#a7bed5bdef9f16b25c92ba27745ab261374787d7" integrity sha512-AO8WW+aRcKWKQAYTfKLzwnpL6U+TfPqS+haRrhCy5ff04Da8WZud3ZgVjspQXaEXJDcTlsjUEVvL39wegDek5w== @@ -3732,7 +4724,12 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.1.tgz#9794c69c8385d0192acc471a540d1f8e0d16218a" integrity sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A== -"@types/chai@^4.1.3", "@types/chai@^4.1.4": +"@types/chai@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.3.tgz#b8a74352977a23b604c01aa784f5b793443fb7dc" + integrity sha512-f5dXGzOJycyzSMdaXVhiBhauL4dYydXwVpavfQ1mVCaGjR56a9QfklXObUxlIY9bGTmCPHEEZ04I16BZ/8w5ww== + +"@types/chai@^4.1.4": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== @@ -3778,7 +4775,12 @@ resolved "https://registry.yarnpkg.com/@types/country-data/-/country-data-0.0.0.tgz#6f5563cae3d148780c5b6539803a29bd93f8f1a1" integrity sha512-lIxCk6G7AwmUagQ4gIQGxUBnvAq664prFD9nSAz6dgd1XmBXBtZABV/op+QsJsIyaP1GZsf/iXhYKHX3azSRCw== -"@types/debug@^4.1.4", "@types/debug@^4.1.5": +"@types/debug@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.4.tgz#56eec47706f0fd0b7c694eae2f3172e6b0b769da" + integrity sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ== + +"@types/debug@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== @@ -3804,17 +4806,24 @@ dependencies: "@types/bn.js" "*" -"@types/enzyme-adapter-react-16@1.0.4", "@types/enzyme-adapter-react-16@^1.0.3": +"@types/enzyme-adapter-react-16@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.4.tgz#27722d28dcc814a99be7f557f3e364a1e889773a" integrity sha512-SWCatt3aKVL0A8JACs2nkV9dDuTZOSOSlNVubcxfEe+YLePxg8Be2slSa5gl+WM/BUW0/c3UClvyzhnzLJh1IQ== dependencies: "@types/enzyme" "*" -"@types/enzyme@*", "@types/enzyme@^3.1.15", "@types/enzyme@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.9.1.tgz#3a0ce07e30066dbc26cd3474c8e680af2d249e26" - integrity sha512-CasnOP73BFE3/5JvGkod+oQtGOD1+CVWz9BV2iAqDFJ+sofL5gTiizSr8ZM3lpDY27ptC8yjAdrUCdv8diKKqw== +"@types/enzyme-adapter-react-16@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.3.tgz#0cf7025b036694ca8d596fe38f24162e7117acf1" + integrity sha512-9eRLBsC/Djkys05BdTWgav8v6fSCjyzjNuLwG2sfa2b2g/VAN10luP0zB0VwtOWFQ0LGjIboJJvIsVdU5gqRmg== + dependencies: + "@types/enzyme" "*" + +"@types/enzyme@*": + version "3.1.13" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.13.tgz#4bbc5c81fa40c9fc7efee25c4a23cb37119a33ea" + integrity sha512-TwzKKiX5sGh/WweucxPXb8zjMLlLekGtBQw0ihk1HSj14zZuioG3Gql3jbxxb1YDRLbT4WQyzWG/h4Y7eCdw1g== dependencies: "@types/cheerio" "*" "@types/react" "*" @@ -3827,6 +4836,22 @@ "@types/cheerio" "*" "@types/react" "*" +"@types/enzyme@^3.1.15": + version "3.1.15" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.15.tgz#fc9a9695ba9f90cd50c4967e64a8c66ec96913d1" + integrity sha512-6b4JWgV+FNec1c4+8HauGbXg5gRc1oQK93t2+4W+bHjG/PzO+iPvagY6d6bXAZ+t+ps51Zb2F9LQ4vl0S0Epog== + dependencies: + "@types/cheerio" "*" + "@types/react" "*" + +"@types/enzyme@^3.9.1": + version "3.9.1" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.9.1.tgz#3a0ce07e30066dbc26cd3474c8e680af2d249e26" + integrity sha512-CasnOP73BFE3/5JvGkod+oQtGOD1+CVWz9BV2iAqDFJ+sofL5gTiizSr8ZM3lpDY27ptC8yjAdrUCdv8diKKqw== + dependencies: + "@types/cheerio" "*" + "@types/react" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" @@ -3874,16 +4899,16 @@ "@types/events" "*" "@types/node" "*" -"@types/express@*", "@types/express@^4.11.1", "@types/express@^4.16.1", "@types/express@^4.17.0": - version "4.17.1" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.1.tgz#4cf7849ae3b47125a567dfee18bfca4254b88c5c" - integrity sha512-VfH/XCP0QbQk5B5puLqTLEeFgR8lfCJHZJKkInZ9mkYd+u8byX0kztXEQxEk4wZXJs8HI+7km2ALXjn4YKcX9w== +"@types/express@*", "@types/express@^4.11.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.11.1.tgz#f99663b3ab32d04cb11db612ef5dd7933f75465b" + integrity sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/express@4.16.1": +"@types/express@4.16.1", "@types/express@^4.16.1": version "4.16.1" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.1.tgz#d756bd1a85c34d87eaf44c888bad27ba8a4b7cf0" integrity sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg== @@ -3901,6 +4926,15 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/express@^4.17.0": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.1.tgz#4cf7849ae3b47125a567dfee18bfca4254b88c5c" + integrity sha512-VfH/XCP0QbQk5B5puLqTLEeFgR8lfCJHZJKkInZ9mkYd+u8byX0kztXEQxEk4wZXJs8HI+7km2ALXjn4YKcX9w== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + "@types/fbemitter@^2.0.32": version "2.0.32" resolved "https://registry.yarnpkg.com/@types/fbemitter/-/fbemitter-2.0.32.tgz#8ed204da0f54e9c8eaec31b1eec91e25132d082c" @@ -4045,16 +5079,26 @@ dependencies: "@types/lodash" "*" -"@types/lodash@*", "@types/lodash@^4.14.104", "@types/lodash@^4.14.136": +"@types/lodash@*", "@types/lodash@^4.14.136": version "4.14.136" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.136.tgz#413e85089046b865d960c9ff1d400e04c31ab60f" integrity sha512-0GJhzBdvsW2RUccNHOBkabI8HZVdOXmXbXhuKlDEd5Vv12P7oAVGfomGp3Ne21o5D/qu1WmthlNKFaoZJJeErA== +"@types/lodash@^4.14.104": + version "4.14.117" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.117.tgz#695a7f514182771a1e0f4345d189052ee33c8778" + integrity sha512-xyf2m6tRbz8qQKcxYZa7PA4SllYcay+eh25DN3jmNYY6gSTL7Htc/bttVdkqj2wfJGbeWlQiX8pIyJpKU+tubw== + "@types/long@*", "@types/long@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== +"@types/long@^3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" + integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== + "@types/mailgun-js@^0.16.3": version "0.16.3" resolved "https://registry.yarnpkg.com/@types/mailgun-js/-/mailgun-js-0.16.3.tgz#655fade2c72c430a7a248d84839f8adc2c400e62" @@ -4091,7 +5135,17 @@ dependencies: "@types/node" "*" -"@types/mocha@^5.2.1", "@types/mocha@^5.2.5", "@types/mocha@^5.2.7": +"@types/mocha@^5.2.1": + version "5.2.5" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" + integrity sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww== + +"@types/mocha@^5.2.5": + version "5.2.6" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.6.tgz#b8622d50557dd155e9f2f634b7d68fd38de5e94b" + integrity sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw== + +"@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== @@ -4115,33 +5169,75 @@ "@types/node-fetch" "*" "@types/react" "*" -"@types/node-fetch@*", "@types/node-fetch@^2.1.2": +"@types/node-fetch@*": version "2.1.4" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.1.4.tgz#093d1beae11541aef25999d70aa09286fd025b1a" integrity sha512-tR1ekaXUGpmzOcDXWU9BW73YfA2/VW1DF1FH+wlJ82BbCSnWTbdX+JkqWQXWKIGsFPnPsYadbXfNgz28g+ccWg== dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^12.11.7": - version "12.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.7.tgz#57682a9771a3f7b09c2497f28129a0462966524a" - integrity sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA== +"@types/node-fetch@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.1.2.tgz#8c5da14d70321e4c4ecd5db668e3f93cf6c7399f" + integrity sha512-XroxUzLpKuL+CVkQqXlffRkEPi4Gh3Oui/mWyS7ztKiyqVxiU+h3imCW5I2NQmde5jK+3q++36/Q96cyRWsweg== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.0.tgz#c40f8e07dce607d3ef25a626b93a6a7cdcf97881" + integrity sha512-kctoM36XiNZT86a7tPsUje+Q/yl+dqELjtYApi0T5eOQ90Elhu0MI10rmYk44yEP4v1jdDvtjQ9DFtpRtHf2Bw== -"@types/node@^10", "@types/node@^10.1.0", "@types/node@^10.12.18", "@types/node@^10.3.2": +"@types/node@^10": version "10.14.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.10.tgz#e491484c6060af8d461e12ec81c0da8a3282b8de" integrity sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q== -"@types/node@^6.0.52", "@types/node@^6.14.4": +"@types/node@^10.1.0": + version "10.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.11.6.tgz#ce5690df6cd917a9178439a1013e39a7e565c46e" + integrity sha512-fnA7yvqg3oKQDb3skBif9w5RRKVKAaeKeNuLzZL37XcSiWL4IoSXQnnbchR3UnBu2EMLHBip7ZVEkqoIVBP8QQ== + +"@types/node@^10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@^10.3.2": + version "10.12.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.26.tgz#2dec19f1f7981c95cb54bab8f618ecb5dc983d0e" + integrity sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg== + +"@types/node@^12.11.7": + version "12.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.7.tgz#57682a9771a3f7b09c2497f28129a0462966524a" + integrity sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA== + +"@types/node@^6.0.52": + version "6.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.6.tgz#31df045b4c7618ff74d84f542fc3d29445dd566b" + integrity sha512-rFs9zCFtSHuseiNXxYxFlun8ibu+jtZPgRM+2ILCmeLiGeGLiIGxuOzD+cNyHegI1GD+da3R/cIbs9+xCLp13w== + +"@types/node@^6.14.4": version "6.14.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.7.tgz#2173f79d7a61d97d3aad2feeaac7ac69a3df39af" integrity sha512-YbPXbaynBTe0pVExPhL76TsWnxSPeFAvImIsmylpBWn/yfw+lHy+Q68aawvZHsgskT44ZAoeE67GM5f+Brekew== -"@types/node@^8.0.0", "@types/node@^8.0.24", "@types/node@^8.0.53", "@types/node@^8.0.7": +"@types/node@^8.0.0", "@types/node@^8.0.53": + version "8.10.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.10.tgz#fec07bc2ad549d9e6d2f7aa0fb0be3491b83163a" + integrity sha512-p3W/hFzQs76RlYRIZsZc5a9bht6m0TspmWYYbKhRswmLnwj9fsE40EbuGifeu/XWR/c0UJQ1DDbvTxIsm/OOAA== + +"@types/node@^8.0.24", "@types/node@^8.0.7": version "8.10.40" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.40.tgz#4314888d5cd537945d73e9ce165c04cc550144a4" integrity sha512-RRSjdwz63kS4u7edIwJUn8NqKLLQ6LyqF/X4+4jp38MBT3Vwetewi2N4dgJEshLbDwNgOJXNYoOwzVZUSSLhkQ== +"@types/node@^8.9.4": + version "8.10.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.12.tgz#dcb66f6de39074a296534bd1a256a3c6a1c8f5b5" + integrity sha512-aRFUGj/f9JVA0qSQiCK9ebaa778mmqMIcy1eKnPktgfm9O6VsnIzzB5wJnjp9/jVrfm7fX1rr3OR1nndppGZUg== + "@types/node@^9.3.0", "@types/node@^9.4.1": version "9.6.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.7.tgz#5f3816d1db2155edcde1b2e3aa5d0e5c520cb564" @@ -4190,7 +5286,12 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.37.tgz#7d6a934b35ee2f0ed0646d286eba559599021c9e" integrity sha512-vjFGX1zMTMz/kUp3xgfJcxMVLkMWVMrdlyc0RwVyve1y9jxwqNaT8wTcv6M51ylq2a/zn5lm8g7qPSoIS4uvZQ== -"@types/qs@^6.2.31", "@types/qs@^6.5.1": +"@types/qs@^6.2.31": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.5.1.tgz#a38f69c62528d56ba7bd1f91335a8004988d72f7" + integrity sha512-mNhVdZHdtKHMMxbqzNK3RzkBcN1cux3AvuCYGTvjEIQT2uheH3eCAyYsbMbh2Bq8nXkeOWs1kyDiF7geWRFQ4Q== + +"@types/qs@^6.5.1": version "6.5.3" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.5.3.tgz#1c3b71b091eaeaf5924538006b7f70603ce63d38" integrity sha512-Jugo5V/1bS0fRhy2z8+cUAHEyWOATaz4rbyLVvcFs7+dXp5HfwpEwzF1Q11bB10ApUqHf+yTauxI0UXQDwGrbA== @@ -4252,7 +5353,14 @@ "@types/react" "*" "@types/react-native" "*" -"@types/react-native@*", "@types/react-native@^0.60.19": +"@types/react-native@*": + version "0.55.8" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.55.8.tgz#31a6b42852088742e7464876742081a2c1ef3fe7" + integrity sha512-Dd8mzEOffbHzrLuNNmodhJzdgnG7V80NGw+nnG560+RmPsQVGcsh9sYOo085jES3wImmOU5aUWSohh0Fv1Ne8Q== + dependencies: + "@types/react" "*" + +"@types/react-native@^0.60.19": version "0.60.19" resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.19.tgz#4d58516f9e981c3f477ad48727331e31a0792aae" integrity sha512-1Qq1EQn/bi7dnsdrZJu0f9MK18KZrEmLGMfw3V9Im5As4uwFUTCIkD4LnFJkfQtRvtJQN1cOQri6MTqT7d9fkg== @@ -4381,11 +5489,16 @@ dependencies: source-map "^0.6.1" -"@types/underscore@*", "@types/underscore@^1.8.8": +"@types/underscore@*": version "1.8.19" resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.8.19.tgz#ae1357f2d28b8089f86ba0e5545d0512e6ef5b28" integrity sha512-9r6zM91/lTnSYTEJbxf7FwgeVXzRZDegaGPXF+Bp0MSMYTTI2UvQPkoti/YE9ZWThU+0DMya6l9XePvOPBLKow== +"@types/underscore@^1.8.8": + version "1.8.8" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.8.8.tgz#510fe1ca5e7fa87fccd405b9a8b566d420bc3d1b" + integrity sha512-EquzRwzAAs04anQ8/6MYXFKvHoD+MIlF+gu87EDda7dN9zrKvQYHsc9VFAPB1xY4tUHQVvBMtjsHrvof2EE1Mg== + "@types/utf8@^2.1.6": version "2.1.6" resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753" @@ -4408,7 +5521,15 @@ dependencies: "@types/ethereum-protocol" "*" -"@types/web3@^1.0.18", "@types/web3@^1.0.19": +"@types/web3@^1.0.18": + version "1.0.18" + resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.18.tgz#87a8651041d21fc37602ff02327df2c7ecf105d1" + integrity sha512-uXQL0LDszt2f476LEmYM6AvSv9F4vU4hWQvlUhwfLHNlIB6OyBXoYsCzWAIhhnc5U0HA7ZBcPybxRJ/yfA6THg== + dependencies: + "@types/bn.js" "*" + "@types/underscore" "*" + +"@types/web3@^1.0.19": version "1.0.19" resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== @@ -4458,13 +5579,20 @@ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.2.tgz#fd4b676846fe731a5de5c6d2e5ef6a377262fc30" integrity sha512-zG61PAp2OcoIBjRV44wftJj6AJgzJrOc32LCYOBqk9bdgcdzK5DCJHV9QZJ60+Fu+fOn79g8Ks3Gixm4CfkZ+w== -"@types/yargs@^13.0.0", "@types/yargs@^13.0.2": +"@types/yargs@^13.0.0": version "13.0.3" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== dependencies: "@types/yargs-parser" "*" +"@types/yargs@^13.0.2": + version "13.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653" + integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ== + dependencies: + "@types/yargs-parser" "*" + "@types/zen-observable@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" @@ -4965,6 +6093,13 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" +"@wry/equality@^0.1.2": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz#b13e18b7a8053c6858aa6c85b54911fb31e3a909" + integrity sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ== + dependencies: + tslib "^1.9.3" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -5017,7 +6152,23 @@ Base64@^1.0.1: resolved "https://registry.yarnpkg.com/Base64/-/Base64-1.0.1.tgz#def45cc50c961bcc9bf2321d0f52bcbfec1f1bb1" integrity sha1-3vRcxQyWG8yb8jIdD1K8v+wfG7E= -JSONStream@^1.0.4, JSONStream@^1.2.1, JSONStream@^1.3.4, JSONStream@~1.3.1: +JSONStream@^1.0.4: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + integrity sha1-wQI3G27Dp887hHygDCC7D85Mbeo= + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" + integrity sha512-3Sp6WZZ/lXl+nTDoGpGWHEpTnnC6X5fnkolYZR6nwIfzbxxvA8utPWe1gCt7i0m9uVGsSz2IS8K8mJ7HmlduMg== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@^1.3.4, JSONStream@~1.3.1: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -5107,7 +6258,15 @@ abstract-leveldown@~2.6.0: dependencies: xtend "~4.0.0" -accepts@^1.3.5, accepts@~1.3.3, accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.5, accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -5151,7 +6310,7 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -"acorn@>= 2.5.2 <= 5.7.3", acorn@^5.0.0, acorn@^5.3.0, acorn@^5.6.2: +"acorn@>= 2.5.2 <= 5.7.3", acorn@^5.6.2: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== @@ -5161,7 +6320,17 @@ acorn@^4.0.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= -acorn@^6.0.5, acorn@^6.0.7, acorn@^6.2.1: +acorn@^5.0.0, acorn@^5.3.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + integrity sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ== + +acorn@^6.0.5, acorn@^6.0.7: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + +acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== @@ -5176,20 +6345,20 @@ aes-js@^3.1.1: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@~4.2.1: +agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0, agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + agentkeepalive@^3.3.0, agentkeepalive@^3.4.1: version "3.5.2" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" @@ -5232,7 +6401,17 @@ ajv-keywords@^1.1.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= -ajv-keywords@^3.1.0, ajv-keywords@^3.2.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + integrity sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74= + +ajv-keywords@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + +ajv-keywords@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== @@ -5245,7 +6424,7 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.1, ajv@^5.3.0: +ajv@^5.1.0, ajv@^5.1.1, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -5255,7 +6434,17 @@ ajv@^5.1.1, ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.3, ajv@^6.6.1, ajv@^6.9.1: +ajv@^6.1.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" + integrity sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y= + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + uri-js "^3.0.2" + +ajv@^6.10.2: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -5265,6 +6454,26 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.3, ajv@^6.6.1, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.5.3: + version "6.7.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" + integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.6.1, ajv@^6.9.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + algebrite@^0.2.23: version "0.2.23" resolved "https://registry.yarnpkg.com/algebrite/-/algebrite-0.2.23.tgz#e0490d7c6ea7ddb0dc46fc98d1026415dfe2d853" @@ -5312,11 +6521,16 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@3.2.0, ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@3.2.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + ansi-fragments@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" @@ -5355,7 +6569,12 @@ ansi-regex@^3.0.0, ansi-regex@~3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -5487,6 +6706,14 @@ apollo-cache-persist@^0.1.1: resolved "https://registry.yarnpkg.com/apollo-cache-persist/-/apollo-cache-persist-0.1.1.tgz#e6cfe1983b998982a679aaf05241d3ed395edb1e" integrity sha512-/7GAyblPR169ryW3ugbtHqiU0UGkhIt10NeaO2gn2ClxjLHF/nIkJD5mx/0OCF2vLNbbnzLZVDeIO1pf72TrEA== +apollo-cache@1.1.26: + version "1.1.26" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.26.tgz#5afe023270effbc2063d90f51d8e56bce274ab37" + integrity sha512-JKFHijwkhXpcQ3jOat+ctwiXyjDhQgy0p6GSaj7zG+or+ZSalPqUnPzFRgRwFLVbYxBKJgHCkWX+2VkxWTZzQQ== + dependencies: + apollo-utilities "^1.1.3" + tslib "^1.9.3" + apollo-cache@1.2.1, apollo-cache@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.2.1.tgz#aae71eb4a11f1f7322adc343f84b1a39b0693644" @@ -5495,7 +6722,21 @@ apollo-cache@1.2.1, apollo-cache@^1.2.1: apollo-utilities "^1.2.1" tslib "^1.9.3" -apollo-client@^2.4.13, apollo-client@^2.5.1: +apollo-client@^2.4.13: + version "2.4.13" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.4.13.tgz#09829fcbd68e069de9840d0a10764d7c6a3d0787" + integrity sha512-7mBdW/CW1qHB8Mj4EFAG3MTtbRc6S8aUUntUdrKfRWV1rZdWa0NovxsgVD/R4HZWZjRQ2UOM4ENsHdM5g1uXOQ== + dependencies: + "@types/zen-observable" "^0.8.0" + apollo-cache "1.1.26" + apollo-link "^1.0.0" + apollo-link-dedup "^1.0.0" + apollo-utilities "1.1.3" + symbol-observable "^1.0.2" + tslib "^1.9.3" + zen-observable "^0.8.0" + +apollo-client@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.5.1.tgz#36126ed1d32edd79c3713c6684546a3bea80e6d1" integrity sha512-MNcQKiqLHdGmNJ0rZ0NXaHrToXapJgS/5kPk0FygXt+/FmDCdzqcujI7OPxEC6e9Yw5S/8dIvOXcRNuOMElHkA== @@ -5677,7 +6918,15 @@ apollo-tracing@0.5.1: apollo-server-env "2.2.0" graphql-extensions "0.5.2" -apollo-utilities@1.2.1, apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.2.1: +apollo-utilities@1.1.3, apollo-utilities@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.1.3.tgz#a8883c0392f6b46eac0d366204ebf34be9307c87" + integrity sha512-pF9abhiClX5gfj/WFWZh8DiI33nOLGxRhXH9ZMquaM1V8bhq1WLFPt2QjShWH3kGQVeIGUK+FQefnhe+ZaaAYg== + dependencies: + fast-json-stable-stringify "^2.0.0" + tslib "^1.9.3" + +apollo-utilities@1.2.1, apollo-utilities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.2.1.tgz#1c3a1ebf5607d7c8efe7636daaf58e7463b41b3c" integrity sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg== @@ -5686,6 +6935,24 @@ apollo-utilities@1.2.1, apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo ts-invariant "^0.2.1" tslib "^1.9.3" +apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: + version "1.0.21" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.21.tgz#cb8b5779fe275850b16046ff8373f4af2de90765" + integrity sha512-ZcxELlEl+sDCYBgEMdNXJAsZtRVm8wk4HIA58bMsqYfd1DSAJQEtZ93F0GZgYNAGy3QyaoBeZtbb0/01++G8JQ== + dependencies: + fast-json-stable-stringify "^2.0.0" + fclone "^1.0.11" + +apollo-utilities@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.2.tgz#8cbdcf8b012f664cd6cb5767f6130f5aed9115c9" + integrity sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + app-module-path@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" @@ -6144,7 +7411,12 @@ async-done@^1.2.0, async-done@^1.2.2: process-nextick-args "^2.0.0" stream-exhaust "^1.0.1" -async-each@^1.0.0, async-each@^1.0.1: +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-each@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.2.tgz#8b8a7ca2a658f927e9f307d6d1a42f4199f0f735" integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg== @@ -6219,14 +7491,21 @@ async@2.6.1: dependencies: lodash "^4.17.10" -async@2.6.2: +async@2.6.2, async@^2.5.0, async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== dependencies: lodash "^4.17.11" -async@^2.0.1, async@^2.1.2, async@^2.1.5, async@^2.3.0, async@^2.4.0, async@^2.5.0, async@^2.6.1, async@^2.6.3: +async@^2.0.1, async@^2.1.2, async@^2.1.5, async@^2.3.0, async@^2.4.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + integrity sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw== + dependencies: + lodash "^4.14.0" + +async@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -6394,6 +7673,19 @@ aws4@^1.2.1, aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +aws4@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + integrity sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w== + +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= + dependencies: + follow-redirects "^1.3.0" + is-buffer "^1.1.5" + axios@^0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" @@ -6416,7 +7708,7 @@ babel-core@7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-core@^6.0.14, babel-core@^6.17.0, babel-core@^6.23.1, babel-core@^6.26.0: +babel-core@^6.0.14, babel-core@^6.17.0, babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== @@ -6441,6 +7733,31 @@ babel-core@^6.0.14, babel-core@^6.17.0, babel-core@^6.23.1, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" +babel-core@^6.23.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.2.tgz#b67a120521dcd6baf1a2ecceeceb595e223da06c" + integrity sha512-rFKFnHY8sbRSqja2O5eTx0z0Na5hukdtsFt7X9xdBFXMurrJ5YoY78Y/2/EuNZIaDQKEJSfxSMePfsymxt0CZg== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + babel-eslint@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" @@ -7230,6 +8547,11 @@ base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== +base64url@2.0.0, base64url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" + integrity sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs= + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -7272,11 +8594,26 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -big-integer@^1.6.15, big-integer@^1.6.31, big-integer@^1.6.44, big-integer@^1.6.7: +big-integer@^1.6.15: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + +big-integer@^1.6.31: + version "1.6.31" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.31.tgz#6d7852486e67c642502dcc03f7225a245c9fc7fa" + integrity sha512-lDbZNHHwxDKnjP7LWg2leO+tjs4SyVs2Z83dsR1Idbe2urRnxZAUdeQ8YBhHaGaWK/4WM3mz+RlbZsgqck17CA== + +big-integer@^1.6.44: version "1.6.44" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.44.tgz#4ee9ae5f5839fc11ade338fea216b4513454a539" integrity sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ== +big-integer@^1.6.7: + version "1.6.28" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.28.tgz#8cef0fda3ccde8759c2c66efcfacc35aea658283" + integrity sha512-OJT3rzgtsYca/5WmmEuFJDPMwROVh5SSjoEX9wIrpfbbWJ4KqRzShs8Cj6jWHaatBYAeWngBA+kmmrcHSklT1g== + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -7292,16 +8629,16 @@ bigi@^1.1.0: resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" integrity sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU= -bignumber.js@*, bignumber.js@~8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.0.2.tgz#d8c4e1874359573b1ef03011a2d861214aeef137" - integrity sha512-EiuvFrnbv0jFixEQ9f58jo7X0qI2lNGIr/MxntmVzQc5JUweDSh8y8hbTCAomFtqwUPIOWcLXP0VEOSZTG7FFw== - -bignumber.js@7.2.1, bignumber.js@^7.0.0, bignumber.js@^7.2.0, bignumber.js@^7.2.1: +bignumber.js@*, bignumber.js@7.2.1, bignumber.js@^7.0.0, bignumber.js@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== +bignumber.js@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.0.tgz#2a477d9dd87d3fedf77b18ad8ba9e373ef275850" + integrity sha512-WWHzlaRFrhO84RfylRcoAye2yQwlUMVASbgjYpRUsAULM/8KpQn+DL0e+xVgLqAzaS/qImPled4wDdmpIBnmEg== + "bignumber.js@git+https://github.com/debris/bignumber.js#master": version "2.0.7" resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9" @@ -7314,6 +8651,11 @@ bignumber.js@7.2.1, bignumber.js@^7.0.0, bignumber.js@^7.2.0, bignumber.js@^7.2. version "2.0.7" resolved "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934" +bignumber.js@~8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.0.2.tgz#d8c4e1874359573b1ef03011a2d861214aeef137" + integrity sha512-EiuvFrnbv0jFixEQ9f58jo7X0qI2lNGIr/MxntmVzQc5JUweDSh8y8hbTCAomFtqwUPIOWcLXP0VEOSZTG7FFw== + binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" @@ -7324,7 +8666,12 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -bindings@^1.2.1, bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: +bindings@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + integrity sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw== + +bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -7348,7 +8695,7 @@ bip32@^1.0.2: typeforce "^1.11.5" wif "^2.0.6" -bip39@2.5.0: +bip39@2.5.0, bip39@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== @@ -7359,7 +8706,7 @@ bip39@2.5.0: safe-buffer "^5.0.1" unorm "^1.3.3" -bip39@^2.2.0, bip39@^2.5.0: +bip39@^2.2.0: version "2.6.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== @@ -7450,7 +8797,7 @@ block-stream@0.0.9: ts-node "^8.4.1" typescript "^3.6.4" -bluebird@3.5.x, bluebird@^3.0.0, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@~3.5.0: +bluebird@3.5.x, bluebird@^3.5.5, bluebird@~3.5.0: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== @@ -7460,6 +8807,21 @@ bluebird@^2.9.33, bluebird@^2.9.34: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= +bluebird@^3.0.0: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== + +bluebird@^3.5.0, bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + +bluebird@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + blueimp-md5@^2.10.0: version "2.11.0" resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.11.0.tgz#eff55d30fe3daddd7e801072e2c4483e5fcfc87c" @@ -7480,7 +8842,23 @@ bn.js@^2.0.3: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.2.0.tgz#12162bc2ae71fc40a5626c33438f3a875cd37625" integrity sha1-EhYrwq5x/EClYmwzQ486h1zTdiU= -body-parser@1.18.3: +body-parser@1.18.2, body-parser@^1.16.0: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +body-parser@1.18.3, body-parser@^1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= @@ -7496,7 +8874,7 @@ body-parser@1.18.3: raw-body "2.3.3" type-is "~1.6.16" -body-parser@1.19.0, body-parser@^1.16.0, body-parser@^1.18.3, body-parser@^1.19.0: +body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -7524,6 +8902,20 @@ boom@2.x.x: dependencies: hoek "2.x.x" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE= + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw== + dependencies: + hoek "4.x.x" + boxen@^1.0.0, boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" @@ -7656,6 +9048,13 @@ browserify-rsa@^4.0.0: bn.js "^4.1.0" randombytes "^2.0.1" +browserify-sha3@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.1.tgz#3ff34a3006ef15c0fb3567e541b91a2340123d11" + integrity sha1-P/NKMAbvFcD7NWflQbkaI0ASPRE= + dependencies: + js-sha3 "^0.3.1" + browserify-sha3@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.4.tgz#086c47b8c82316c9d47022c26185954576dd8e26" @@ -7692,7 +9091,16 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.1.0, browserslist@^4.6.0, browserslist@^4.6.2: +browserslist@^4.1.0: + version "4.3.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.7.tgz#f1de479a6466ea47a0a26dcc725e7504817e624a" + integrity sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ== + dependencies: + caniuse-lite "^1.0.30000925" + electron-to-chromium "^1.3.96" + node-releases "^1.1.3" + +browserslist@^4.6.0, browserslist@^4.6.2: version "4.6.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== @@ -7751,12 +9159,25 @@ buf-compare@^1.0.0: resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" integrity sha1-/vKNqLgROgoNtEMLC2Rntpcws0o= +buffer-alloc-unsafe@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a" + integrity sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo= + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== -buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: +buffer-alloc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303" + integrity sha1-BVFNM78WVtNUDGhPZbEgLpDsowM= + dependencies: + buffer-alloc-unsafe "^0.1.0" + buffer-fill "^0.1.0" + +buffer-alloc@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== @@ -7784,16 +9205,26 @@ buffer-equal@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= +buffer-fill@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071" + integrity sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q== + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + integrity sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA== + buffer-reverse@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" @@ -7837,7 +9268,23 @@ buffer@^4.3.0, buffer@^4.9.0, buffer@^4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.0, buffer@^5.0.5, buffer@^5.0.6, buffer@^5.2.1: +buffer@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.0.tgz#53cf98241100099e9eeae20ee6d51d21b16e541e" + integrity sha512-nUJyfChH7PMJy75eRDCCKtszSEFokUNXC1hNVSe+o+VdcgvDPLs20k3v8UXI8ruRYAJiYtyRea8mYyqPxoHWDw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buffer@^5.0.5, buffer@^5.0.6: + version "5.1.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" + integrity sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buffer@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== @@ -7983,7 +9430,27 @@ cacache@^11.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^12.0.0, cacache@^12.0.2: +cacache@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.0.tgz#1ed91cc306312a53ad688b1563ce4c416faec564" + integrity sha512-0baf1FhCp16LhN+xDJsOrSiaPDCTD3JegZptVmLDoEbFcT5aT+BeFGt3wcDU3olCP5tpTCXU5sv0+TsKWT9WGQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -8179,7 +9646,7 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@5.0.0: +camelcase@5.0.0, camelcase@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== @@ -8204,7 +9671,7 @@ camelcase@^4.0.0, camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -8221,7 +9688,17 @@ can-promise@0.0.1: dependencies: window-or-global "^1.0.1" -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000984: +caniuse-lite@^1.0.30000844: + version "1.0.30000981" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000981.tgz#5b6828803362363e5a1deba2eb550185cf6cec8f" + integrity sha512-JTByHj4DQgL2crHNMK6PibqAMrqqb/Vvh0JrsTJVSWG4VSUrT16EklkuRZofurlMjgA9e+zlCM4Y39F3kootMQ== + +caniuse-lite@^1.0.30000925: + version "1.0.30000927" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000927.tgz#114a9de4ff1e01f5790fe578ecd93421c7524665" + integrity sha512-ogq4NbUWf1uG/j66k0AmiO3GjqJAlQyF8n4w8a954cbCyFKmYGvRtgz6qkq2fWuduTXHibX7GyYL5Pg58Aks2g== + +caniuse-lite@^1.0.30000984: version "1.0.30000989" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== @@ -8305,7 +9782,7 @@ chai@^4.0.1, chai@^4.1.2, chai@^4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -8334,6 +9811,15 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + change-case@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" @@ -8438,7 +9924,7 @@ chmodr@~1.0.2: resolved "https://registry.yarnpkg.com/chmodr/-/chmodr-1.0.2.tgz#04662b932d0f02ec66deaa2b0ea42811968e3eb9" integrity sha1-BGYrky0PAuxm3qorDqQoEZaOPrk= -chokidar@2.0.4: +chokidar@2.0.4, chokidar@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== @@ -8474,7 +9960,7 @@ chokidar@^1.4.2: optionalDependencies: fsevents "^1.0.0" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.1.5: +chokidar@^2.0.0, chokidar@^2.1.5: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -8493,6 +9979,25 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.1.5: optionalDependencies: fsevents "^1.2.7" +chokidar@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + integrity sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + chokidar@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" @@ -8508,17 +10013,24 @@ chokidar@^3.0.2: optionalDependencies: fsevents "^2.0.6" -chownr@^1.0.1, chownr@^1.1.1: +chownr@^1.0.1, chownr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= + +chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -chownr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + dependencies: + tslib "^1.9.0" -chrome-trace-event@^1.0.0, chrome-trace-event@^1.0.2: +chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -8642,7 +10154,37 @@ cli-truncate@^1.0.0: slice-ansi "^1.0.0" string-width "^2.0.0" -cli-ux@^5.2.1, cli-ux@^5.3.1: +cli-ux@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.3.0.tgz#6f6183e03a2b765fb1d973af484d5a47775d2a9c" + integrity sha512-4iNRnT85aX6DP7TmwoM2zycHQt8S2i0R/7tAqnfNWVDOM04b2E9hxbYsidCx1p8+xTM6wLZSOVHP+lvclHAXpQ== + dependencies: + "@oclif/command" "^1.5.1" + "@oclif/errors" "^1.2.1" + "@oclif/linewrap" "^1.0.0" + "@oclif/screen" "^1.0.3" + ansi-escapes "^3.1.0" + ansi-styles "^3.2.1" + cardinal "^2.1.1" + chalk "^2.4.1" + clean-stack "^2.0.0" + extract-stack "^1.0.0" + fs-extra "^7.0.1" + hyperlinker "^1.0.0" + indent-string "^3.2.0" + is-wsl "^1.1.0" + lodash "^4.17.11" + natural-orderby "^2.0.1" + password-prompt "^1.1.2" + semver "^5.6.0" + string-width "^3.1.0" + strip-ansi "^5.1.0" + supports-color "^5.5.0" + supports-hyperlinks "^1.0.1" + treeify "^1.1.0" + tslib "^1.9.3" + +cli-ux@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.3.1.tgz#3bed8b37c44b03a5d1b9d71d39a69a919a101835" integrity sha512-l2MXbitx0FjtHKSbHytuxfxWv6MdWBRh23ItRJjU17cjj0dqZxfAL863tzbR1FIs7jccPllPUvn3QWK6BQg3Pg== @@ -8849,19 +10391,26 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" -color-name@1.1.3: +color-convert@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== + dependencies: + color-name "^1.1.1" + +color-name@1.1.3, color-name@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -8917,11 +10466,21 @@ colors@1.2.4: resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.4.tgz#e0cb41d3e4b20806b3bfc27f4559f01b94bc2f7c" integrity sha512-6Y+iBnWmXL+AWtlOp2Vr6R2w5MUlNJRwR0ShVFaAb1CqWzhPOpQg4L0jxD+xpw/Nc8QJwaq3KM79QUCriY8CWQ== -colors@^1.0.3, colors@^1.1.2, colors@^1.2.1: +colors@^1.0.3: version "1.3.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== +colors@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794" + integrity sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg== + +colors@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" + integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ== + colorspace@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" @@ -8943,13 +10502,27 @@ columnify@^1.5.4, columnify@~1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= + dependencies: + delayed-stream "~1.0.0" + +combined-stream@^1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" +combined-stream@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" @@ -8969,7 +10542,7 @@ commander@2.11.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@2.15.1: +commander@2.15.1, commander@^2.12.1, commander@^2.8.1, commander@^2.9.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== @@ -8979,7 +10552,7 @@ commander@2.18.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== -commander@2.19.0: +commander@2.19.0, commander@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -8991,7 +10564,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0: +commander@^2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -9073,14 +10646,34 @@ compress-commons@^2.1.1: normalize-path "^3.0.0" readable-stream "^2.3.6" -compressible@^2.0.12, compressible@~2.0.16: +compressible@^2.0.12, compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + integrity sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k= + dependencies: + mime-db ">= 1.33.0 < 2" + +compressible@~2.0.16: version "2.0.16" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.16.tgz#a49bf9858f3821b64ce1be0296afc7380466a77f" integrity sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA== dependencies: mime-db ">= 1.38.0 < 2" -compression@^1.7.0, compression@^1.7.1, compression@^1.7.4: +compression@^1.7.0, compression@^1.7.1: + version "1.7.2" + resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + integrity sha1-qv+81qr4VLROuygDU9WtFlH1mmk= + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -9353,13 +10946,18 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@1.6.0, convert-source-map@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= + convert-to-spaces@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" @@ -9445,7 +11043,7 @@ core-js@3.0.0-beta.13: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0-beta.13.tgz#7732c69be5e4758887917235fe7c0352c4cb42a1" integrity sha512-16Q43c/3LT9NyePUJKL8nRIQgYWjcBhjJSMWg96PVSxoS0PeE0NHitPI3opBrs9MGGHjte1KoEVr9W63YKlTXQ== -core-js@3.3.3, core-js@^3.2.0: +core-js@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.3.tgz#b7048d3c6c1a52b5fe55a729c1d4ccdffe0891bb" integrity sha512-0xmD4vUJRY8nfLyV9zcpC17FtSie5STXzw+HyYw2t8IIvmDnbq7RJUULECCo+NstpJtwK9kx8S+898iyqgeUow== @@ -9455,17 +11053,35 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.0.0, core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.7: +core-js@^2.0.0, core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" + integrity sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs= + +core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== +core-js@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" + integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cors@^2.8.1, cors@^2.8.4, cors@^2.8.5: +cors@^2.8.1, cors@^2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" + integrity sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY= + dependencies: + object-assign "^4" + vary "^1" + +cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -9483,7 +11099,16 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.5, cosmiconfig@^5.0.7, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.5: + version "5.0.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" + integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + +cosmiconfig@^5.0.7, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -9569,7 +11194,7 @@ create-react-context@0.2.3: fbjs "^0.8.0" gud "^1.0.0" -cross-env@5.2.0, cross-env@^5.1.3, cross-env@^5.1.6: +cross-env@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== @@ -9577,6 +11202,14 @@ cross-env@5.2.0, cross-env@^5.1.3, cross-env@^5.1.6: cross-spawn "^6.0.5" is-windows "^1.0.0" +cross-env@^5.1.3, cross-env@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.6.tgz#0dc05caf945b24e4b9e3b12871fe0e858d08b38d" + integrity sha512-VWTDq+G4v383SzgRS7jsAVWqEWF0aKZpDz1GVjhONvPRgHB1LnxP2sXUVFKbykHkPSnfRKS8YdiDevWFwZmQ9g== + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + cross-fetch@2.2.2, cross-fetch@3.0.4, cross-fetch@^2.1.0, cross-fetch@^2.1.1, cross-fetch@^2.2.2, cross-fetch@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.2.tgz#b7136491967031949c7f86b15903aef4fa3f1768" @@ -9633,6 +11266,13 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + integrity sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4= + dependencies: + boom "5.x.x" + crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -9749,7 +11389,12 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" -csstype@^2.2.0, csstype@^2.6.3: +csstype@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.4.1.tgz#ba35a94259cffc07ed022954737a1da690dcae2c" + integrity sha512-JuXYT9dt8xtpc4mwHSOYnZtQS3TmYVhmZDyXbppTid29krM8Eyn5CmsZjIDTSvzunvutYOBwQmnziR5vgFkJGw== + +csstype@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.3.tgz#b701e5968245bf9b08d54ac83d00b624e622a9fa" integrity sha512-rINUZXOkcBmoHWEyu7JdHu5JMzkGRoMX4ov9830WNgxf5UYxcBUO0QTKAqeJ5EZfSdlrcJYkC8WwfVW7JYi4yg== @@ -9906,7 +11551,12 @@ dayjs@^1.8.15: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.16.tgz#2a3771de537255191b947957af2fd90012e71e64" integrity sha512-XPmqzWz/EJiaRHjBqSJ2s6hE/BUoCIHKgdS2QPtTQtKcS9E4/Qn0WomoH1lXanWCzri+g7zPcuNV4aTZ8PMORQ== -debounce@^1.1.0, debounce@^1.2.0: +debounce@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.1.0.tgz#6a1a4ee2a9dc4b7c24bb012558dbcdb05b37f408" + integrity sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ== + +debounce@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== @@ -9923,21 +11573,21 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0: +debug@3.1.0, debug@=3.1.0, debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.0.1, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@3.2.6, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -9976,6 +11626,13 @@ decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, deca resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== + dependencies: + xregexp "4.0.0" + decimal.js@10.0.1, decimal.js@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.0.1.tgz#d04b16b277f0f9af09671cee225c4882e8857c58" @@ -10082,7 +11739,7 @@ deep-equal@^1.0.0, deep-equal@^1.0.1, deep-equal@~1.0.1: resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= -deep-extend@^0.5.1, deep-extend@^0.6.0: +deep-extend@^0.5.1, deep-extend@^0.6.0, deep-extend@~0.4.0: version "0.5.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== @@ -10158,7 +11815,15 @@ deferred-leveldown@~4.0.0: abstract-leveldown "~5.0.0" inherits "^2.0.3" -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + integrity sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ= + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -10256,6 +11921,11 @@ denque@^1.4.1: resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -10697,7 +12367,17 @@ duplexer@^0.1.1, duplexer@~0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= -duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: +duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + integrity sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +duplexify@^3.6.0: version "3.6.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== @@ -10739,6 +12419,13 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecdsa-sig-formatter@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + integrity sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM= + dependencies: + safe-buffer "^5.0.1" + ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -10746,6 +12433,14 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" +ecdsa-sig-formatter@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" + integrity sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE= + dependencies: + base64url "^2.0.0" + safe-buffer "^5.0.1" + ecurve@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" @@ -10789,11 +12484,21 @@ electron-download@^3.0.1: semver "^5.3.0" sumchecker "^1.2.0" -electron-to-chromium@^1.3.191, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.191: version "1.3.216" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.216.tgz#7eda27727ba5412c96729df8fceb35bf503eb65a" integrity sha512-G2rJKCdDLTaAP56WKMj0mcr7jtr3LBBL2EaF73DamfFpvcl0PzKUIaUocPP8NLu9s/RbbHLMGkbFOkDRK5PQIQ== +electron-to-chromium@^1.3.47: + version "1.3.188" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.188.tgz#e28e1afe4bb229989e280bfd3b395c7ec03c8b7a" + integrity sha512-tEQcughYIMj8WDMc59EGEtNxdGgwal/oLLTDw+NEqJRJwGflQvH3aiyiexrWeZOETP4/ko78PVr6gwNhdozvuQ== + +electron-to-chromium@^1.3.96: + version "1.3.97" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.97.tgz#61918815c3baa03cdf42e91e32fae2f7c5c29b65" + integrity sha512-cElMxsoUl8BoY+DnTNXebdVuDz/l0HS5ijpq1uUcHNMrzFiQRKmADn39luHVIaeISO8qtFbNmqhSBU/BQCHwig== + electron@^1.8.7: version "1.8.8" resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.8.tgz#a90cddb075291f49576993e6f5c8bb4439301cae" @@ -10818,7 +12523,7 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@=6.4.0: +elliptic@=6.4.0, elliptic@^6.0.0, elliptic@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= @@ -10841,7 +12546,7 @@ elliptic@^3.1.0: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.0.0, elliptic@^6.2.3, elliptic@^6.4.0, elliptic@^6.4.1: +elliptic@^6.2.3, elliptic@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== @@ -11076,7 +12781,18 @@ errorhandler@^1.5.0: accepts "~1.3.3" escape-html "~1.0.3" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.5.0, es-abstract@^1.6.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -11088,6 +12804,26 @@ es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5. is-regex "^1.0.4" object-keys "^1.0.12" +es-abstract@^1.5.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + integrity sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA== + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" @@ -11097,7 +12833,25 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.42" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" + integrity sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.46" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es5-ext@^0.10.50: version "0.10.51" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== @@ -11125,7 +12879,12 @@ es6-promise@^3.2.1: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= -es6-promise@^4.0.3, es6-promise@^4.0.5: +es6-promise@^4.0.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + integrity sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ== + +es6-promise@^4.0.5: version "4.2.6" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== @@ -11162,7 +12921,7 @@ es6-template@^1.0.4: mkdirp "^0.5.1" sliced "^1.0.1" -es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -11172,6 +12931,16 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +es6-weak-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -11204,7 +12973,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@1.x.x, escodegen@^1.9.0: +escodegen@1.x.x: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== @@ -11216,6 +12985,18 @@ escodegen@1.x.x, escodegen@^1.9.0: optionalDependencies: source-map "~0.6.1" +escodegen@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-plugin-eslint-comments@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz#4ef6c488dbe06aa1627fea107b3e5d059fc8a395" @@ -11282,7 +13063,15 @@ eslint-scope@3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^4.0.0, eslint-scope@^4.0.3: +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -11378,7 +13167,12 @@ esprima@3.x.x, esprima@^3.1.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw== + +esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -11613,6 +13407,18 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" +eth-sig-util@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.1.2.tgz#9b357395b5ca07fae6b430d3e534cf0a0f1df118" + integrity sha512-bNgt7txkEmaNlLf+PrbwYIdp4KRkB3E7hW0/QwlBpgv920pVVyQnF0evoovfiRveNKM4OrtPYZTojjmsfuCUOw== + dependencies: + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" + eth-sig-util@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.2.0.tgz#769fa3d296b450f6618dedeefe076642c923a16f" @@ -11669,7 +13475,15 @@ ethereum-common@^0.0.18: resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= -ethereum-types@^2.1.2, ethereum-types@^2.1.5: +ethereum-types@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-2.1.2.tgz#7398873e0eede1dd0956a134e1037032f6ed3c14" + integrity sha512-JsQnroPOsZ81yN75HVzvobosSxjr/59oEdYnydTgnV13Fg9PwS078CtPyBzARXequBl2Hnz4h7f3VF64u8P01A== + dependencies: + "@types/node" "*" + bignumber.js "~8.0.2" + +ethereum-types@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-2.1.5.tgz#477e2741837af07286cb3c48f3443a8bac2afb4b" integrity sha512-2aX0x5iUOYgfuaA72YIS0j6GaD0pewcTNZistsPPCFJd4K3JzbJmyD6U4DdCKHWeEslt+NCUx4DgaRq1GMJHvw== @@ -11692,6 +13506,15 @@ ethereumjs-abi@0.6.7, "ethereumjs-abi@git+https://github.com/ethereumjs/ethereum bn.js "^4.11.8" ethereumjs-util "^6.0.0" +ethereumjs-account@2.0.5, ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + ethereumjs-account@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" @@ -11701,14 +13524,16 @@ ethereumjs-account@3.0.0: rlp "^2.2.1" safe-buffer "^5.1.1" -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== +ethereumjs-block@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.1.0.tgz#71d1b19e18061f14cf6371bf34ba31a359931360" + integrity sha512-ip+x4/7hUInX+TQfhEKsQh9MJK1Dbjp4AuPjf1UdX3udAV4beYD4EMCNIPzBLCsGS8WQZYXLpo83tVTISYNpow== dependencies: + async "^2.0.1" + ethereumjs-common "^0.6.0" + ethereumjs-tx "^1.2.2" ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" + merkle-patricia-tree "^2.1.2" ethereumjs-block@2.2.0, ethereumjs-block@~2.2.0: version "2.2.0" @@ -11748,6 +13573,11 @@ ethereumjs-blockchain@^3.4.0: safe-buffer "^5.1.2" semaphore "^1.1.0" +ethereumjs-common@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.6.1.tgz#ec98edf315a7f107afb6acc48e937a8266979fae" + integrity sha512-4jOrfDu9qOBTTGGb3zrfT1tE1Hyc6a8LJpEk0Vk9AYlLkBY7crjVICyJpRvjNI+KLDMpMITMw3eWVZOLMtZdhw== + ethereumjs-common@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.1.0.tgz#5ec9086c314d619d8f05e79a0525829fcb0e93cb" @@ -11761,6 +13591,19 @@ ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" +ethereumjs-util@5.2.0, ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + ethereumjs-util@6.1.0, ethereumjs-util@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" @@ -11785,19 +13628,6 @@ ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0: rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@~6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" @@ -11811,16 +13641,15 @@ ethereumjs-util@~6.0.0: safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-vm@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" - integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== +ethereumjs-vm@2.6.0, ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.4.0, ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" ethereumjs-account "^2.0.3" ethereumjs-block "~2.2.0" - ethereumjs-blockchain "^3.4.0" ethereumjs-common "^1.1.0" ethereumjs-util "^6.0.0" fake-merkle-patricia-tree "^1.0.1" @@ -11829,15 +13658,16 @@ ethereumjs-vm@3.0.0: rustbn.js "~0.2.0" safe-buffer "^5.1.1" -ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.4.0, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== +ethereumjs-vm@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" + integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" ethereumjs-account "^2.0.3" ethereumjs-block "~2.2.0" + ethereumjs-blockchain "^3.4.0" ethereumjs-common "^1.1.0" ethereumjs-util "^6.0.0" fake-merkle-patricia-tree "^1.0.1" @@ -11846,6 +13676,20 @@ ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@ rustbn.js "~0.2.0" safe-buffer "^5.1.1" +ethereumjs-wallet@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz#67244b6af3e8113b53d709124b25477b64aeccda" + integrity sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^5.2.0" + hdkey "^1.0.0" + safe-buffer "^5.1.2" + scrypt.js "^0.2.0" + utf8 "^3.0.0" + uuid "^3.3.2" + ethereumjs-wallet@0.6.3, ethereumjs-wallet@^0.6.0: version "0.6.3" resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" @@ -11893,7 +13737,23 @@ ethers@4.0.0-beta.3: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^4.0.0-beta.1, ethers@^4.0.27, ethers@~4.0.4: +ethers@^4.0.0-beta.1, ethers@^4.0.27: + version "4.0.28" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.28.tgz#74d9acb57f4ede3337c8d60476b38d0fe646af01" + integrity sha512-5JTHrPoFLqf+xCAI3pKwXSOgWBSJJoAUdPtPLr1ZlKbSKiIFMkPlRNovmZS3jhIw5sHW1YoVWOaJ6ZR2gKRbwg== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@~4.0.4: version "4.0.32" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.32.tgz#46378864cb3bf29b57c2effd17508b560743abf6" integrity sha512-r0k2tBNF6MYEsvwmINeP3VPppD/7eAZyiOk/ifDDawXGCKqr3iEQkPq6OZSDVD+4Jie38WPteS9thXzpn2+A5Q== @@ -11970,12 +13830,12 @@ eventemitter3@1.1.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= -eventemitter3@3.1.0: +eventemitter3@3.1.0, eventemitter3@^3.0.0, eventemitter3@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== -eventemitter3@3.1.2, eventemitter3@^3.0.0, eventemitter3@^3.1.0: +eventemitter3@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== @@ -12300,7 +14160,7 @@ express-request-id@1.4.1: dependencies: uuid "^3.3.2" -express@4.16.4: +express@4.16.4, express@^4.16.4: version "4.16.4" resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== @@ -12336,7 +14196,7 @@ express@4.16.4: utils-merge "1.0.1" vary "~1.1.2" -express@4.17.1, express@^4.14.0, express@^4.16.4, express@^4.17.1: +express@4.17.1, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -12372,6 +14232,42 @@ express@4.17.1, express@^4.14.0, express@^4.16.4, express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +express@^4.14.0: + version "4.16.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -12394,7 +14290,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -12615,7 +14511,20 @@ fbjs-scripts@^1.1.0: semver "^5.1.0" through2 "^2.0.0" -fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.9: +fbjs@^0.8.0, fbjs@^0.8.9: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + integrity sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +fbjs@^0.8.16, fbjs@^0.8.4: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -12642,6 +14551,11 @@ fbjs@^1.0.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" +fclone@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" + integrity sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA= + fd-slicer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" @@ -12819,7 +14733,7 @@ find-babel-config@^1.1.0: json5 "^0.5.1" path-exists "^3.0.0" -find-cache-dir@2.0.0: +find-cache-dir@2.0.0, find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== @@ -13092,7 +15006,15 @@ flow-stoplight@^1.0.0: resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -13112,12 +15034,26 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +follow-redirects@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + integrity sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg== + dependencies: + debug "^3.1.0" + fontfaceobserver@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz#e2705d293e2c585a6531c2a722905657317a2991" integrity sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng== -for-each@^0.3.2, for-each@~0.3.3: +for-each@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" + integrity sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ= + dependencies: + is-function "~1.0.0" + +for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -13153,6 +15089,11 @@ foreach@2.0.4: resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.4.tgz#cc5d0d8ae1d46cc9a555c2682f910977859935df" integrity sha1-zF0NiuHUbMmlVcJoL5EJd4WZNd8= +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + foreground-child@^1.5.3, foreground-child@^1.5.6: version "1.5.6" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" @@ -13166,7 +15107,16 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.2.0, form-data@^2.3.1, form-data@^2.3.3, form-data@~2.3.2: +form-data@^2.2.0, form-data@^2.3.1, form-data@~2.3.1, form-data@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + +form-data@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== @@ -13417,7 +15367,23 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.7: +fsevents@^1.0.0, fsevents@^1.1.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.3.tgz#08292982e7059f6674c93d8b829c1e8604979ac0" + integrity sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.9.0" + +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +fsevents@^1.2.7: version "1.2.9" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== @@ -13460,7 +15426,7 @@ fstream-npm@~1.2.1: fstream-ignore "^1.0.0" inherits "2" -fstream@^1.0.0, fstream@^1.0.8, fstream@~1.0.10, fstream@~1.0.11: +fstream@^1.0.0, fstream@~1.0.10, fstream@~1.0.11: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== @@ -13470,6 +15436,16 @@ fstream@^1.0.0, fstream@^1.0.8, fstream@~1.0.10, fstream@~1.0.11: mkdirp ">=0.5 0" rimraf "2" +fstream@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + ftp@~0.3.10: version "0.3.10" resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" @@ -13478,7 +15454,7 @@ ftp@~0.3.10: readable-stream "1.1.x" xregexp "2.0.0" -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: +function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -13517,7 +15493,42 @@ fuzzysort@^1.1.4: resolved "https://registry.yarnpkg.com/fuzzysort/-/fuzzysort-1.1.4.tgz#a0510206ed44532cbb52cf797bf5a3cb12acd4ba" integrity sha512-JzK/lHjVZ6joAg3OnCjylwYXYVjRiwTY6Yb25LvfpJHK8bjisfnZJ5bY8aVWwTwCXgxPNgLAtmHL+Hs5q1ddLQ== -ganache-core@^2.5.3, ganache-core@^2.6.0: +ganache-core@^2.5.3: + version "2.5.6" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.5.6.tgz#dd2ce3ec6e86930f8662cf4985c778cdf9b6ea79" + integrity sha512-Xvi5iOa8TQMbYCpWVrjnUHuBWFRZl1hJeNaxnytM2uh08elVXuKgcDdH8g7j1+r6WgW2FQmoowj4K/m/G999XA== + dependencies: + abstract-leveldown "3.0.0" + async "2.6.1" + bip39 "2.5.0" + bn.js "4.11.8" + cachedown "1.0.0" + clone "2.1.2" + debug "3.1.0" + encoding-down "5.0.4" + eth-sig-util "2.1.2" + ethereumjs-abi "0.6.5" + ethereumjs-account "2.0.5" + ethereumjs-block "2.1.0" + ethereumjs-tx "1.3.7" + ethereumjs-util "5.2.0" + ethereumjs-vm "2.6.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.11" + merkle-patricia-tree "2.3.1" + rlp "2.1.0" + seedrandom "2.4.4" + source-map-support "0.5.9" + tmp "0.0.33" + web3-provider-engine "14.1.0" + websocket "1.0.26" + optionalDependencies: + ethereumjs-wallet "0.6.2" + web3 "1.0.0-beta.35" + +ganache-core@^2.6.0: version "2.7.0" resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.7.0.tgz#9897c7ad6ebe934e92f88e62fcf3c6cc1f1a807f" integrity sha512-oZBNb2pZlD/uMxHDYJp4SBfavwblcGyqNPiZBgilp2n1fO/rnZwEAcpKE+1Uq1sO27YxuKJosm3Jvr9NarOWGA== @@ -13590,7 +15601,16 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1, gaxios@^1.5.0: +gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.5.1.tgz#11b6fa57dbc9aa2d88de9069ee6f1a61615a707d" + integrity sha512-gqVZy/mvjx/VzSlr3ZwRvG7fx8ZxtZiSTHvEBB/enBu0ccsnt0Vr0PqgyTuKU7cGAa6BSH09Oy0UeN85lT61Fg== + dependencies: + extend "^3.0.2" + https-proxy-agent "^2.2.1" + node-fetch "^2.2.0" + +gaxios@^1.5.0: version "1.8.2" resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.8.2.tgz#8bc29dab0f5e296cada2c9d3ebbd0857410df15f" integrity sha512-Mp6zmABg+0CxJA4b7DEWQ4ZWQzEaWxRNmHAcvCO+HU3dfoFTY925bdpZrTkLWPEtKjS9RBJKrJInzb+VtvAVYA== @@ -13625,6 +15645,15 @@ gcp-metadata@^0.3.0: extend "^3.0.0" retry-request "^3.0.0" +gcp-metadata@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.7.0.tgz#6c35dbb52bda32a427bb9c98f54237ddd1b5406f" + integrity sha512-ffjC09amcDWjh3VZdkDngIo7WoluyC5Ag9PAYxZbmQLOLNI8lvPtoKTSCyU54j2gwy5roZh6sSMTfkY2ct7K3g== + dependencies: + axios "^0.18.0" + extend "^3.0.1" + retry-axios "0.3.2" + gcp-metadata@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.9.3.tgz#1f9d7495f7460a14526481f29e11596dd563dd26" @@ -13641,6 +15670,18 @@ gcp-metadata@^3.0.0: gaxios "^2.0.1" json-bigint "^0.3.0" +gcs-resumable-upload@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-0.13.0.tgz#706e5c835e4c53cd5527b86013c9f4dda4bfcb14" + integrity sha512-hrSYPFJWyx8FDLJEK3XeqbNcCjkRqcuKSaUxL1RpwEAWAxtV+AdUH+NX3n7st/U6/JddQkdb1mmWAy3jgRDflw== + dependencies: + axios "^0.18.0" + configstore "^4.0.0" + google-auth-library "^2.0.0" + pumpify "^1.5.1" + request "^2.87.0" + stream-events "^1.0.4" + gcs-resumable-upload@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz#2b06f5876dcf60f18a309343f79ed951aff01399" @@ -13708,7 +15749,12 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== -get-caller-file@^1.0.1, get-caller-file@^1.0.2: +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= + +get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== @@ -14135,7 +16181,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.2: +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== @@ -14147,7 +16193,7 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.3: +glob@7.1.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -14181,7 +16227,7 @@ glob@^6.0.1, glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1, glob@~7.1.2, glob@~7.1.4: +glob@^7.1.4, glob@~7.1.2, glob@~7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -14274,7 +16320,12 @@ global@^4.3.0, global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: + version "11.5.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" + integrity sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ== + +globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== @@ -14367,6 +16418,19 @@ google-auth-library@^0.10.0: lodash.noop "^3.0.1" request "^2.74.0" +google-auth-library@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-2.0.2.tgz#7a315d2036744af6afcad87b210ee6638b40f57b" + integrity sha512-FURxmo1hBVmcfLauuMRKOPYAPKht3dGuI2wjeJFalDUThO0HoYVjr4yxt5cgYSFm1dgUpmN9G/poa7ceTFAIiA== + dependencies: + axios "^0.18.0" + gcp-metadata "^0.7.0" + gtoken "^2.3.0" + https-proxy-agent "^2.2.1" + jws "^3.1.5" + lru-cache "^5.0.0" + semver "^5.5.0" + google-auth-library@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.0.tgz#6378ea3e56067312209eee58223e5a00adaec639" @@ -14559,16 +16623,26 @@ got@^8.3.2: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: +graceful-fs@^4.0.0: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -graceful-fs@~4.1.11, graceful-fs@~4.1.6: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + +graceful-fs@^4.1.15, graceful-fs@~4.1.11, graceful-fs@~4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +graceful-fs@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" + integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== + "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -14685,11 +16759,16 @@ graphql-tag-pluck@0.5.0: source-map-support "^0.5.9" typescript "^3.2.2" -graphql-tag@2.10.1, graphql-tag@^2.4.2, graphql-tag@^2.9.2: +graphql-tag@2.10.1: version "2.10.1" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== +graphql-tag@^2.4.2, graphql-tag@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" + integrity sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w== + graphql-toolkit@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/graphql-toolkit/-/graphql-toolkit-0.0.5.tgz#9e6ebe3d4b33fc329e5ee3b7775bfe7fba2f48a5" @@ -14761,7 +16840,7 @@ grpc-gcp@^0.1.1: grpc "^1.16.0" protobufjs "^6.8.8" -grpc@1.24.1, grpc@^1.16.0: +grpc@1.24.1: version "1.24.1" resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.24.1.tgz#0afefd6feeeb3d9ce09586f08400007ea6cb6a16" integrity sha512-NFIWbt3RXZU4VlDLpiAM/Ca8Yz30QShUdPGMqOPH652PmA+2fau2vuW+tOYWQUkYMfBW2yege/T5p65e5TetVQ== @@ -14773,6 +16852,17 @@ grpc@1.24.1, grpc@^1.16.0: node-pre-gyp "^0.13.0" protobufjs "^5.0.3" +grpc@^1.16.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.20.0.tgz#85ad2aeb94bdbfe59c4a40b2fff8fc1ea70cd6a0" + integrity sha512-HgYuJzRomkBlJAfC/78epuWzwMiByxgj4JsO6G6dHXXNfARTsUqpM/FmPSJJNFGvzCev0g6tn33CE7nWEmhDEg== + dependencies: + lodash.camelcase "^4.3.0" + lodash.clone "^4.5.0" + nan "^2.0.0" + node-pre-gyp "^0.12.0" + protobufjs "^5.0.3" + gtoken@^1.2.1: version "1.2.3" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" @@ -14783,6 +16873,17 @@ gtoken@^1.2.1: mime "^1.4.1" request "^2.72.0" +gtoken@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.0.tgz#4e0ffc16432d7041a1b3dbc1d97aac17a5dc964a" + integrity sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw== + dependencies: + axios "^0.18.0" + google-p12-pem "^1.0.0" + jws "^3.1.4" + mime "^2.2.0" + pify "^3.0.0" + gtoken@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.2.tgz#49890a866c1f44e173099be95515db5872a92151" @@ -14860,7 +16961,7 @@ hammerjs@^2.0.8: resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE= -handlebars@4.0.11: +handlebars@4.0.11, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= @@ -14871,7 +16972,29 @@ handlebars@4.0.11: optionalDependencies: uglify-js "^2.6" -handlebars@^4.0.1, handlebars@^4.0.3, handlebars@^4.1.0, handlebars@^4.1.2: +handlebars@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" + integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +handlebars@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" + integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +handlebars@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.3.tgz#180bae52c1d0e9ec0c15d7e82a4362d662762f6e" integrity sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw== @@ -14910,6 +17033,14 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + har-validator@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" @@ -15003,7 +17134,14 @@ has-yarn@^1.0.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" integrity sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac= -has@^1.0.1, has@^1.0.3, has@~1.0.3: +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= + dependencies: + function-bind "^1.0.2" + +has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -15043,6 +17181,16 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ== + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + hdkey@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-0.7.1.tgz#caee4be81aa77921e909b8d228dd0f29acaee632" @@ -15051,7 +17199,7 @@ hdkey@^0.7.1: coinstring "^2.0.0" secp256k1 "^3.0.1" -hdkey@^1.1.0: +hdkey@^1.0.0, hdkey@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.1.tgz#c2b3bfd5883ff9529b72f2f08b28be0972a9f64a" integrity sha512-DvHZ5OuavsfWs5yfVJZestsnc3wzPvLWNk6c2nRUfo6X+OtxypGt20vDDf7Ba+MJzjL3KS1og2nw2eBbLCOUTA== @@ -15158,6 +17306,11 @@ hoek@2.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + hoist-non-react-statics@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.0.1.tgz#fba3e7df0210eb9447757ca1a7cb607162f0a364" @@ -15184,7 +17337,7 @@ hoist-non-react-statics@^2.3.1: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.0.1, hoist-non-react-statics@^3.2.0, hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.0.1, hoist-non-react-statics@^3.2.0, hoist-non-react-statics@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== @@ -15214,14 +17367,31 @@ home-path@^1.0.1: resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.6.tgz#d549dc2465388a7f8667242c5b31588d29af29fc" integrity sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw== -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: +homedir-polyfill@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= + dependencies: + parse-passwd "^1.0.0" + +homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@^2.4.2, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + integrity sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw== + +hosted-git-info@^2.1.5, hosted-git-info@^2.4.2, hosted-git-info@^2.6.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +hosted-git-info@^2.7.1: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== @@ -15342,6 +17512,16 @@ http-call@^5.1.2: parse-json "^4.0.0" tunnel-agent "^0.6.0" +http-errors@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -15363,14 +17543,14 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@^1.7.1, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.1.tgz#6a4ffe5d35188e1c39f872534690585852e1f027" + integrity sha512-jWEUgtZWGSMba9I1N3gc1HmvpBUaNC9vDdA46yScAdp+C5rdEuKWUBLWTQpW9FwSWSbYYs++b6SDCxf9UEJzfw== dependencies: depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" + inherits "2.0.3" + setprototypeof "1.1.0" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" @@ -15382,6 +17562,17 @@ http-errors@~1.4.0: inherits "2.0.1" statuses ">= 1.2.1 < 2" +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" @@ -15435,7 +17626,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@2.2.1: +https-proxy-agent@2.2.1, https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== @@ -15443,7 +17634,7 @@ https-proxy-agent@2.2.1: agent-base "^4.1.0" debug "^3.1.0" -https-proxy-agent@^2.1.0, https-proxy-agent@^2.2.1: +https-proxy-agent@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== @@ -15572,13 +17763,20 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.4.17, iconv-lite@^0.4.4: + version "0.4.21" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" + integrity sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw== + dependencies: + safer-buffer "^2.1.0" + iconv-lite@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.0.tgz#59cdde0a2a297cc2aeb0c6445a195ee89f127550" @@ -15642,11 +17840,16 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5, ignore@^3.3.7: +ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^3.3.7: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + integrity sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg== + ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -15778,20 +17981,20 @@ inflight@^1.0.4, inflight@~1.0.4, inflight@~1.0.6: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@2.0.1, inherits@=2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@2.0.4, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.0, ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0, ini@~1.3.4: version "1.3.5" @@ -15873,7 +18076,7 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^6.2.0, inquirer@^6.2.2: +inquirer@^6.2.0: version "6.5.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== @@ -15892,7 +18095,7 @@ inquirer@^6.2.0, inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@~6.3.1: +inquirer@^6.2.2, inquirer@~6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== @@ -15911,11 +18114,16 @@ inquirer@~6.3.1: strip-ansi "^5.1.0" through "^2.3.6" -interpret@1.2.0, interpret@^1.0.0, interpret@^1.1.0: +interpret@1.2.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -15961,6 +18169,16 @@ ip@^1.1.4, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + integrity sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= + ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" @@ -16052,6 +18270,11 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-callable@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + integrity sha1-hut1OSgF3cM69xySoO7fdO52BLI= + is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -16188,7 +18411,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-function@^1.0.1: +is-function@^1.0.1, is-function@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= @@ -16203,7 +18426,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== -is-glob@4.0.0: +is-glob@4.0.0, is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= @@ -16229,7 +18452,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -16485,6 +18708,11 @@ is-subset@^0.1.1: resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -16909,6 +19137,11 @@ jest-fetch-mock@^2.1.2: cross-fetch "^2.2.2" promise-polyfill "^7.1.1" +jest-get-type@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" + integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== + jest-get-type@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" @@ -17009,7 +19242,12 @@ jest-pnp-resolver@^1.2.1: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: +jest-regex-util@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" + integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== + +jest-regex-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== @@ -17088,7 +19326,12 @@ jest-runtime@^24.9.0: strip-bom "^3.0.0" yargs "^13.3.0" -jest-serializer@^24.4.0, jest-serializer@^24.9.0: +jest-serializer@^24.4.0: + version "24.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" + integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== + +jest-serializer@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== @@ -17130,7 +19373,18 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.0.0, jest-validate@^24.7.0, jest-validate@^24.9.0: +jest-validate@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" + integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== + dependencies: + camelcase "^5.0.0" + chalk "^2.0.1" + jest-get-type "^24.0.0" + leven "^2.1.0" + pretty-format "^24.0.0" + +jest-validate@^24.7.0, jest-validate@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== @@ -17155,7 +19409,15 @@ jest-watcher@^24.9.0: jest-util "^24.9.0" string-length "^2.0.0" -jest-worker@^24.6.0, jest-worker@^24.9.0: +jest-worker@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" + integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== + dependencies: + merge-stream "^1.0.1" + supports-color "^6.1.0" + +jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== @@ -17195,7 +19457,18 @@ js-base64@^2.1.8, js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" integrity sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw== -js-beautify@^1.7.4, js-beautify@^1.8.8: +js-beautify@^1.7.4: + version "1.10.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.0.tgz#9753a13c858d96828658cd18ae3ca0e5783ea672" + integrity sha512-OMwf/tPDpE/BLlYKqZOhqWsd3/z2N3KOlyn1wsCRGFwViE8LOQTcDtathQvHvZc+q+zWmcNAbwKSC+iJoMaH2Q== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "~0.5.1" + nopt "~4.0.1" + +js-beautify@^1.8.8: version "1.10.2" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.2.tgz#88c9099cd6559402b124cfab18754936f8a7b178" integrity sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ== @@ -17231,6 +19504,11 @@ js-sha3@0.8.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +js-sha3@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243" + integrity sha1-hhIoAhQvCChQKg0d7h2V4lO7AkM= + js-sha3@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" @@ -17256,7 +19534,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.12.0: +js-yaml@3.12.0, js-yaml@^3.10.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== @@ -17272,7 +19550,7 @@ js-yaml@3.12.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.0: +js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -17538,7 +19816,38 @@ jsonwebtoken@8.1.0: ms "^2.0.0" xtend "^4.0.1" -jsonwebtoken@^8.1.0, jsonwebtoken@^8.2.1, jsonwebtoken@^8.4.0, jsonwebtoken@^8.5.1: +jsonwebtoken@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz#056c90eee9a65ed6e6c72ddb0a1d325109aaf643" + integrity sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag== + dependencies: + jws "^3.1.5" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + +jsonwebtoken@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz#333ee39aa8f238f32fa41693e7a2fb7e42f82b31" + integrity sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw== + dependencies: + jws "^3.1.4" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + xtend "^4.0.1" + +jsonwebtoken@^8.4.0, jsonwebtoken@^8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== @@ -17602,6 +19911,25 @@ just-extend@^3.0.0: resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-3.0.0.tgz#cee004031eaabf6406da03a7b84e4fe9d78ef288" integrity sha512-Fu3T6pKBuxjWT/p4DkqGHFRsysc8OauWr4ZRTY9dIx07Y9O0RkoR5jcv28aeD1vuAwhm3nLkDurwLXoALp4DpQ== +jwa@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" + integrity sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU= + dependencies: + base64url "2.0.0" + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.9" + safe-buffer "^5.0.1" + +jwa@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + integrity sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.10" + safe-buffer "^5.0.1" + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -17611,7 +19939,24 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.0.0, jws@^3.1.4, jws@^3.1.5, jws@^3.2.2: +jws@^3.0.0, jws@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + integrity sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ== + dependencies: + jwa "^1.1.5" + safe-buffer "^5.0.1" + +jws@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" + integrity sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI= + dependencies: + base64url "^2.0.0" + jwa "^1.1.4" + safe-buffer "^5.0.1" + +jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -17644,7 +19989,7 @@ keccak@^1.0.2, keccak@^1.4.0: nan "^2.2.1" safe-buffer "^5.1.0" -keccakjs@^0.2.0, keccakjs@^0.2.1: +keccakjs@^0.2.0: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== @@ -17652,6 +19997,14 @@ keccakjs@^0.2.0, keccakjs@^0.2.1: browserify-sha3 "^0.0.4" sha3 "^1.2.2" +keccakjs@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.1.tgz#1d633af907ef305bbf9f2fa616d56c44561dfa4d" + integrity sha1-HWM6+QfvMFu/ny+mFtVsRFYd+k0= + dependencies: + browserify-sha3 "^0.0.1" + sha3 "^1.1.0" + keygrip@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" @@ -17981,6 +20334,11 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -18148,12 +20506,17 @@ load-segment@^1.0.1: lazy-async "~1.0.1" load-script-global "~1.0.1" -loader-runner@^2.3.0, loader-runner@^2.4.0: +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= + +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.1.0: +loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= @@ -18162,7 +20525,7 @@ loader-utils@1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" -loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -18390,11 +20753,6 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.flowright@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flowright/-/lodash.flowright-3.5.0.tgz#2b5fff399716d7e7dc5724fe9349f67065184d67" - integrity sha1-K1//OZcW1+fcVyT+k0n2cGUYTWc= - lodash.foreach@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-3.0.3.tgz#6fd7efb79691aecd67fdeac2761c98e701d6c39a" @@ -18595,7 +20953,15 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash.template@^4.0.2, lodash.template@^4.4.0, lodash.template@^4.5.0: +lodash.template@^4.0.2, lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -18652,7 +21018,7 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@4.17.10, lodash@4.17.11, lodash@4.17.14, lodash@4.17.15, lodash@4.17.4, lodash@4.x.x, lodash@=4.17.11, lodash@=4.17.4, lodash@^2.4.1, lodash@^3.10.1, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.0, lodash@^4.6.1, lodash@^4.7.14, lodash@~4.17.4: +lodash@4.17.10, lodash@4.17.11, lodash@4.17.14, lodash@4.17.15, lodash@4.17.4, lodash@4.x.x, lodash@=4.17.11, lodash@=4.17.4, lodash@^2.4.1, lodash@^3.10.1, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.0, lodash@^4.6.1, lodash@^4.7.14, lodash@~4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -18809,7 +21175,7 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" -lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3, lru-cache@^4.1.5, lru-cache@~4.1.1: +lru-cache@^4.0.0, lru-cache@^4.1.3, lru-cache@^4.1.5, lru-cache@~4.1.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -18817,6 +21183,22 @@ lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cach pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^4.1.1, lru-cache@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + integrity sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -19227,6 +21609,20 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== +merkle-patricia-tree@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.1.tgz#7d4e7263a9c85c1679187cad4a6d71f48d524c71" + integrity sha512-Qp9Mpb3xazznXzzGQBqHbqCpT2AR9joUOHYYPiQjYCarrdCPCnLWXo4BFv77y4xN26KR224xoU1n/qYY7RYYgw== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" @@ -19574,16 +21970,31 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0, "mime-db@>= 1.38.0 < 2": +mime-db@1.40.0: version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +"mime-db@>= 1.38.0 < 2": + version "1.38.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" + integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== + mime-db@~1.23.0: version "1.23.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= +mime-db@~1.36.0: + version "1.36.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== + mime-types@2.1.11: version "2.1.11" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" @@ -19591,13 +22002,27 @@ mime-types@2.1.11: dependencies: mime-db "~1.23.0" -mime-types@^2.0.8, mime-types@^2.1.11, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.7: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@^2.1.11, mime-types@~2.1.24, mime-types@~2.1.7: version "2.1.24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== dependencies: mime-db "1.40.0" +mime-types@~2.1.19: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== + dependencies: + mime-db "~1.36.0" + mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -19608,7 +22033,17 @@ mime@1.6.0, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.2.0, mime@^2.3.1, mime@^2.4.1: +mime@^2.0.3, mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + +mime@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + +mime@^2.4.1: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -19623,7 +22058,12 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + integrity sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4= + +mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -19684,7 +22124,15 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.5: +minipass@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + integrity sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g== + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -19824,7 +22272,24 @@ mocha@^4.1.0: mkdirp "0.5.1" supports-color "4.4.0" -mocha@^5.1.1, mocha@^5.2.0: +mocha@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.1.1.tgz#b774c75609dac05eb48f4d9ba1d827b97fde8a7b" + integrity sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw== + dependencies: + browser-stdout "1.3.1" + commander "2.11.0" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "4.4.0" + +mocha@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== @@ -19893,23 +22358,40 @@ module-not-found-error@^1.0.0: resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" integrity sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA= -moment-timezone@^0.5.21, moment-timezone@^0.5.23: +moment-timezone@^0.5.21: version "0.5.26" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.26.tgz#c0267ca09ae84631aa3dc33f65bedbe6e8e0d772" integrity sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g== dependencies: moment ">= 2.9.0" +moment-timezone@^0.5.23: + version "0.5.23" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" + integrity sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w== + dependencies: + moment ">= 2.9.0" + moment@2.19.3: version "2.19.3" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.3.tgz#bdb99d270d6d7fda78cc0fbace855e27fe7da69f" integrity sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8= -moment@2.24.0, "moment@>= 2.9.0", moment@^2.10.6, moment@^2.22.1, moment@^2.24.0: +moment@2.24.0, moment@^2.10.6, moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== +"moment@>= 2.9.0": + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= + +moment@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" + integrity sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ== + moo@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" @@ -20040,7 +22522,12 @@ nan@2.13.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== -nan@^2.0.8, nan@^2.10.0, nan@^2.11.0, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.2.1, nan@^2.3.3: +nan@^2.0.0, nan@^2.0.8, nan@^2.10.0, nan@^2.2.1, nan@^2.3.3, nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== + +nan@^2.11.0, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -20134,7 +22621,25 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1, needle@^2.2.4: +needle@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" + integrity sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +needle@^2.2.4: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== @@ -20143,12 +22648,22 @@ needle@^2.2.1, needle@^2.2.4: iconv-lite "^0.4.4" sax "^1.2.4" +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" + integrity sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA== + +neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -20365,7 +22880,7 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.3.0: +node-fetch@2.3.0, node-fetch@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== @@ -20378,7 +22893,12 @@ node-fetch@^1.0.1, node-fetch@~1.7.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.0.0-alpha.8, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: +node-fetch@^2.0.0-alpha.8, node-fetch@^2.1.2, node-fetch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" + integrity sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA== + +node-fetch@^2.5.0, node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== @@ -20429,7 +22949,36 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0, node-libs-browser@^2.2.1: +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -20491,7 +23040,17 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.2.1, node-notifier@^5.4.2: +node-notifier@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== + dependencies: + growly "^1.3.0" + semver "^5.4.1" + shellwords "^0.1.1" + which "^1.3.0" + +node-notifier@^5.4.2: version "5.4.3" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== @@ -20502,6 +23061,22 @@ node-notifier@^5.2.1, node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + integrity sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-pre-gyp@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" @@ -20550,6 +23125,22 @@ node-pre-gyp@^0.13.0: semver "^5.3.0" tar "^4" +node-pre-gyp@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" + integrity sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA= + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-releases@^1.1.25: version "1.1.26" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.26.tgz#f30563edc5c7dc20cf524cc8652ffa7be0762937" @@ -20557,6 +23148,13 @@ node-releases@^1.1.25: dependencies: semver "^5.3.0" +node-releases@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2" + integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ== + dependencies: + semver "^5.3.0" + node-sass@^4.11.0: version "4.12.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" @@ -20595,7 +23193,7 @@ nodemailer@^4.6.8: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== -nodemon@1.19.1, nodemon@^1.18.8: +nodemon@1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.1.tgz#576f0aad0f863aabf8c48517f6192ff987cd5071" integrity sha512-/DXLzd/GhiaDXXbGId5BzxP1GlsqtMGM9zTmkWrgXtSqjKmGSbLicM/oAy4FR0YWm14jCHRwnR31AHS2dYFHrg== @@ -20611,6 +23209,22 @@ nodemon@1.19.1, nodemon@^1.18.8: undefsafe "^2.0.2" update-notifier "^2.5.0" +nodemon@^1.18.8: + version "1.18.9" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.9.tgz#90b467efd3b3c81b9453380aeb2a2cba535d0ead" + integrity sha512-oj/eEVTEI47pzYAjGkpcNw0xYwTl4XSTUQv2NPQI6PpN3b75PhpuYk3Vb3U80xHCyM2Jm+1j68ULHXl4OR3Afw== + dependencies: + chokidar "^2.0.4" + debug "^3.1.0" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.6" + semver "^5.5.0" + supports-color "^5.2.0" + touch "^3.1.0" + undefsafe "^2.0.2" + update-notifier "^2.5.0" + nodent-compiler@^3.2.10: version "3.2.11" resolved "https://registry.yarnpkg.com/nodent-compiler/-/nodent-compiler-3.2.11.tgz#8f4bc703d7d8d0e563f5e09ea22efdce04dbaf9b" @@ -20694,7 +23308,7 @@ normalize-git-url@~3.0.2: resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q= -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0, "normalize-package-data@~1.0.1 || ^2.0.0": +normalize-package-data@^2.0.0, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0, "normalize-package-data@~1.0.1 || ^2.0.0": version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -20704,6 +23318,16 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-package-data@~2.3.5: version "2.3.8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" @@ -20837,7 +23461,15 @@ npm-package-arg@~4.1.0: hosted-git-info "^2.1.4" semver "4 || 5" -npm-packlist@^1.1.6, npm-packlist@^1.4.4: +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + integrity sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-packlist@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== @@ -21214,7 +23846,7 @@ nyc@11.7.2: yargs "11.1.0" yargs-parser "^8.0.0" -oauth-sign@~0.8.1: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= @@ -21268,7 +23900,12 @@ object-keys@0.5.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.5.0.tgz#09e211f3e00318afc4f592e36e7cdc10d9ad7293" integrity sha1-CeIR8+ADGK/E9ZLjbnzcENmtcpM= -object-keys@^1.0.11, object-keys@^1.0.12: +object-keys@^1.0.11, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= + +object-keys@^1.0.12: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== @@ -21317,7 +23954,17 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.entries@^1.0.4, object.entries@^1.1.0: +object.entries@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + integrity sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +object.entries@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== @@ -21384,7 +24031,17 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.0.4, object.values@^1.1.0: +object.values@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +object.values@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== @@ -21437,7 +24094,12 @@ on-finished@^2.2.0, on-finished@^2.3.0, on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@^1.0.0, on-headers@~1.0.1, on-headers@~1.0.2: +on-headers@^1.0.0, on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= + +on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -21468,14 +24130,26 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.2.0, open@^6.3.0: +open@^6.2.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: is-wsl "^1.1.0" -opencollective-postinstall@^2.0.0, opencollective-postinstall@^2.0.2: +open@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.3.0.tgz#60d0b845ee38fae0631f5d739a21bd40e3d2a527" + integrity sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA== + dependencies: + is-wsl "^1.1.0" + +opencollective-postinstall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.0.tgz#5fe062f2706bb84150f7fb1af9f1277e46ec1388" + integrity sha512-XAe80GycLe2yRGnJsUtt+EO5lk06XYRQt4kJJe53O2kJHPZJOZ+XMF/b47HW96e6LhfKVpwnXVr/s56jhV98jg== + +opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== @@ -21589,7 +24263,16 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-locale@^3.0.0, os-locale@^3.1.0: +os-locale@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== + dependencies: + execa "^0.10.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== @@ -21663,7 +24346,14 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + dependencies: + p-try "^2.0.0" + +p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== @@ -21703,7 +24393,12 @@ p-map@^1.1.1: resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== -p-map@^2.0.0, p-map@^2.1.0: +p-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.0.0.tgz#be18c5a5adeb8e156460651421aceca56c213a50" + integrity sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w== + +p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -21853,11 +24548,16 @@ pacote@~2.7.38: unique-filename "^1.1.0" which "^1.2.12" -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" @@ -22021,7 +24721,12 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -22128,7 +24833,12 @@ path-match@^1.2.4: http-errors "~1.4.0" path-to-regexp "^1.0.0" -path-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= + +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -22219,7 +24929,18 @@ pbkdf2@3.0.8: dependencies: create-hmac "^1.1.2" -pbkdf2@^3.0.3, pbkdf2@^3.0.9: +pbkdf2@^3.0.3: + version "3.0.16" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" + integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pbkdf2@^3.0.9: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== @@ -22352,7 +25073,14 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" + integrity sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA== + dependencies: + node-modules-regexp "^1.0.0" + +pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== @@ -22592,7 +25320,16 @@ postcss@^5.0.10: source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.1, postcss@^6.0.21, postcss@^6.0.23: +postcss@^6.0.1, postcss@^6.0.21: + version "6.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.21.tgz#8265662694eddf9e9a5960db6da33c39e4cd069d" + integrity sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw== + dependencies: + chalk "^2.3.2" + source-map "^0.6.1" + supports-color "^5.3.0" + +postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -22713,12 +25450,17 @@ prettier@1.16.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== -prettier@1.16.4: +prettier@1.16.4, prettier@^1.14.2: version "1.16.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== -prettier@^1.14.2, prettier@^1.14.3, prettier@^1.15.3: +prettier@^1.14.3: + version "1.17.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" + integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== + +prettier@^1.15.3: version "1.18.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== @@ -22747,7 +25489,15 @@ pretty-format@^23.6.0: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.0.0, pretty-format@^24.7.0, pretty-format@^24.9.0: +pretty-format@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" + integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== + dependencies: + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + +pretty-format@^24.7.0, pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== @@ -22808,7 +25558,7 @@ private@^0.1.6, private@^0.1.8: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -22818,6 +25568,11 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + process@^0.11.0, process@^0.11.1, process@^0.11.10, process@^0.11.9: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -22836,12 +25591,12 @@ progress-stream@^1.1.0: speedometer "~0.1.2" through2 "~0.2.3" -progress@2.0.0: +progress@2.0.0, progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= -progress@2.0.3, progress@^2.0.0, progress@^2.0.3: +progress@2.0.3, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -22947,7 +25702,7 @@ prop-types-exact@1.2.0, prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@15.6.2: +prop-types@15.6.2, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -22955,7 +25710,16 @@ prop-types@15.6.2: loose-envify "^1.3.1" object-assign "^4.1.1" -prop-types@^15, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.3, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15, prop-types@^15.5.8, prop-types@^15.6.1: + version "15.6.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" + integrity sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ== + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.3, prop-types@^15.6.0, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -22988,7 +25752,26 @@ protobufjs@^5.0.3: glob "^7.0.5" yargs "^3.10.0" -protobufjs@^6.8.0, protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: +protobufjs@^6.8.0: + version "6.8.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.6.tgz#ce3cf4fff9625b62966c455fc4c15e4331a11ca2" + integrity sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^3.0.32" + "@types/node" "^8.9.4" + long "^4.0.0" + +protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: version "6.8.8" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== @@ -23026,7 +25809,23 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -proxy-addr@~2.0.4, proxy-addr@~2.0.5: +proxy-addr@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + integrity sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.6.0" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== @@ -23172,7 +25971,16 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3, pumpify@^1.3.5, pumpify@^1.5.1: +pumpify@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + integrity sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA== + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + +pumpify@^1.3.5, pumpify@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -23254,12 +26062,17 @@ qrcode@^1.2.0: pngjs "^3.3.0" yargs "^12.0.5" -qs@6.5.2, qs@~6.5.2: +qs@6.5.1, qs@^6.4.0, qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== + +qs@6.5.2, qs@^6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -qs@6.7.0, qs@^6.4.0, qs@^6.5.0, qs@^6.5.1: +qs@6.7.0, qs@^6.5.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== @@ -23354,7 +26167,14 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== + dependencies: + safe-buffer "^5.1.0" + +randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -23379,7 +26199,17 @@ range-parser@^1.0.3, range-parser@~1.2.0, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.3.3: +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +raw-body@2.3.3, raw-body@^2.2.0: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== @@ -23389,7 +26219,7 @@ raw-body@2.3.3: iconv-lite "0.4.23" unpipe "1.0.0" -raw-body@2.4.0, raw-body@^2.2.0: +raw-body@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== @@ -23409,6 +26239,16 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + integrity sha1-6xiYnG1PTxYsOZ953dKfODVWgJI= + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-addons-shallow-compare@15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz#198a00b91fc37623db64a28fd17b596ba362702f" @@ -23417,17 +26257,18 @@ react-addons-shallow-compare@15.6.2: fbjs "^0.8.4" object-assign "^4.1.0" -react-apollo@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.4.1.tgz#89db63ebacf01c1603553bb476f089492aaeab2c" - integrity sha512-fSaiwXzY5xRmqKuGCtkMON8paL4/rKf4pB2aSI/0Ot8tn+gJisFqZ0iz9Pxvl6MHnJm1/gjJD3X1J4KmbYN2Yw== +react-apollo@^2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.5.8.tgz#c7a593b027efeefdd8399885e0ac6bec3b32623c" + integrity sha512-60yOQrnNosxU/tRbOxGDaYNLFcOKmQqxHPhxyvKTlGIaF/rRCXQRKixUgWVffpEupSHHD7psY5k5ZOuZsdsSGQ== dependencies: - fbjs "^1.0.0" - hoist-non-react-statics "^3.0.0" - invariant "^2.2.2" - lodash.flowright "^3.5.0" + apollo-utilities "^1.3.0" + fast-json-stable-stringify "^2.0.0" + hoist-non-react-statics "^3.3.0" lodash.isequal "^4.5.0" - prop-types "^15.6.0" + prop-types "^15.7.2" + ts-invariant "^0.4.2" + tslib "^1.9.3" react-async-hook@^3.4.0: version "3.4.0" @@ -23473,7 +26314,15 @@ react-deep-force-update@^1.0.0: resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz#bcd31478027b64b3339f108921ab520b4313dc2c" integrity sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw= -react-devtools-core@^3.6.0, react-devtools-core@^3.6.3: +react-devtools-core@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.0.tgz#77009517d72594fe6e2794f5ae160646d77fc467" + integrity sha512-picLP5RMESANerl2Ieo2rcMmVBqTG5QgIkSGcoJqvT5V4+HpLRjz5QW8xC85i+bXLdJmjoi3ZE9qDpNa5m7S4A== + dependencies: + shell-quote "^1.6.1" + ws "^3.3.1" + +react-devtools-core@^3.6.3: version "3.6.3" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814" integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ== @@ -23550,11 +26399,21 @@ react-is@16.6.3: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0" integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA== -react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.3.2: + version "16.3.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" + integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== + +react-is@^16.7.0, react-is@^16.9.0: version "16.9.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== +react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4, react-is@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + react-lazyload-fadein@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/react-lazyload-fadein/-/react-lazyload-fadein-1.1.0.tgz#f1a46f989d00cab2a9593cdbb083f2927c03621f" @@ -23909,11 +26768,16 @@ react-native-svg-mock@^2.0.0: resolved "https://registry.yarnpkg.com/react-native-svg-mock/-/react-native-svg-mock-2.0.0.tgz#27f4793e860ec6cae783930e6afb54869f0a2ea9" integrity sha512-+Op91zndXy+fUHZlcYo2YU3RzW5yXvKXE/mqMgYOdJLLS2kWwZBjAGt+CiKGl/+ZKnJ8/h0TWiiT0vCSv2NxEA== -react-native-svg@^9.11.1, react-native-svg@^9.3.6: +react-native-svg@^9.11.1: version "9.11.1" resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.11.1.tgz#b1ccf48de413ff8c4f476f202aaa3893f4c8b59a" integrity sha512-BmNCM81SSzhj1+N5rYiy7sxrkmybgiT8Cu8yVRB7zVoWze/i1lbCWJah+Gk0OHHwR35ZA31oVKf5jtO4G1n94Q== +react-native-svg@^9.3.6: + version "9.3.6" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.3.6.tgz#99361aa98aabad0d538f63e7096456cf54f48e2c" + integrity sha512-HEx8tSwzIN2kmY4prpUMQK2DY3aGkPXgKIiHfuvmGvuL+7d4wn4j7v1z/3TyLfwwSxlwGKG036TUQOot1BKGMA== + react-native-swiper@^1.5.14: version "1.5.14" resolved "https://registry.yarnpkg.com/react-native-swiper/-/react-native-swiper-1.5.14.tgz#1c6f949ca377186300f972bb0f30d24062c899aa" @@ -24104,7 +26968,7 @@ react-reveal@^1.2.2: dependencies: prop-types "^15.5.10" -react-test-renderer@16.9.0, react-test-renderer@^16.0.0-0: +react-test-renderer@16.9.0: version "16.9.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.9.0.tgz#7ed657a374af47af88f66f33a3ef99c9610c8ae9" integrity sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ== @@ -24114,6 +26978,16 @@ react-test-renderer@16.9.0, react-test-renderer@^16.0.0-0: react-is "^16.9.0" scheduler "^0.15.0" +react-test-renderer@^16.0.0-0: + version "16.8.3" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.3.tgz#230006af264cc46aeef94392e04747c21839e05e" + integrity sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.3" + scheduler "^0.13.3" + react-themeable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/react-themeable/-/react-themeable-1.1.0.tgz#7d4466dd9b2b5fa75058727825e9f152ba379a0e" @@ -24307,7 +27181,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.2, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.2, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -24340,7 +27214,25 @@ readable-stream@1.1.x, readable-stream@^1.0.33, readable-stream@~1.1.10, readabl isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: +"readable-stream@2 || 3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz#19c2e9c1ce43507c53f6eefbcf1ee3d4aaa786f5" + integrity sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@3, readable-stream@^3.0.2, readable-stream@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.0.1, readable-stream@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== @@ -24384,7 +27276,17 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.0.0, readdirp@^2.2.1: +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -24518,6 +27420,13 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties@^8.0.2: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -24525,7 +27434,12 @@ regenerate-unicode-properties@^8.0.2: dependencies: regenerate "^1.4.0" -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + integrity sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg== + +regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== @@ -24554,6 +27468,13 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== + dependencies: + private "^0.1.6" + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -24604,6 +27525,30 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +regexpu-core@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + regexpu-core@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" @@ -24636,6 +27581,11 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== + regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" @@ -24648,6 +27598,13 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== + dependencies: + jsesc "~0.5.0" + regjsparser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" @@ -24844,7 +27801,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.88.0, request@2.x, request@^2.45.0, request@^2.67.0, request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0, request@^2.83.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: +request@2.88.0, request@^2.45.0, request@^2.67.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -24870,6 +27827,60 @@ request@2.88.0, request@2.x, request@^2.45.0, request@^2.67.0, request@^2.72.0, tunnel-agent "^0.6.0" uuid "^3.3.2" +request@2.x, request@^2.72.0, request@^2.74.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@^2.79.0, request@^2.81.0, request@^2.83.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + integrity sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@~2.74.0: version "2.74.0" resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" @@ -25032,26 +28043,40 @@ resolve@1.5.0: dependencies: path-parse "^1.0.5" -resolve@1.x, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@1.x, resolve@^1.8.1, resolve@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + +resolve@^1.1.6, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +resolve@^1.1.7, resolve@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -resolve@~1.11.1: +resolve@^1.10.0, resolve@~1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" -resolve@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== +resolve@~1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" + integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== dependencies: - path-parse "^1.0.5" + path-parse "^1.0.6" responselike@1.0.2, responselike@^1.0.2: version "1.0.2" @@ -25087,6 +28112,11 @@ retry-as-promised@^3.1.0: dependencies: any-promise "^1.3.0" +retry-axios@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13" + integrity sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ== + retry-request@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-3.3.1.tgz#fb71276235a617e97551e9be737ab5b91591fb9e" @@ -25119,7 +28149,14 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== + dependencies: + glob "^7.0.5" + +rimraf@2.6.3, rimraf@^2.5.2, rimraf@^2.6.3, rimraf@~2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -25158,7 +28195,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.3: +rlp@2.1.0, rlp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.1.0.tgz#e4f9886d5a982174f314543831e36e1a658460f9" + integrity sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA== + dependencies: + safe-buffer "^5.1.1" + +rlp@^2.2.1, rlp@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.3.tgz#7f94aef86cec412df87d5ea1d8cb116a47d45f0e" integrity sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ== @@ -25245,7 +28289,14 @@ rxjs@^5.4.3: dependencies: symbol-observable "1.0.1" -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.2: +rxjs@^6.3.3, rxjs@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== + dependencies: + tslib "^1.9.0" + +rxjs@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== @@ -25257,12 +28308,12 @@ safe-buffer@5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0: +safe-buffer@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -25291,7 +28342,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -25381,6 +28432,14 @@ scheduler@0.15.0, scheduler@^0.15.0: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.13.3: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler@^0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.16.2.tgz#f74cd9d33eff6fc554edfb79864868e4819132c1" @@ -25398,7 +28457,7 @@ schema-utils@1.0.0, schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^0.4.4, schema-utils@^0.4.5: +schema-utils@^0.4.4: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== @@ -25406,11 +28465,24 @@ schema-utils@^0.4.4, schema-utils@^0.4.5: ajv "^6.1.0" ajv-keywords "^3.1.0" +schema-utils@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + integrity sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + scmp@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/scmp/-/scmp-0.0.3.tgz#3648df2d7294641e7f78673ffc29681d9bad9073" integrity sha1-NkjfLXKUZB5/eGc//CloHZutkHM= +scroll-into-view@^1.11.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/scroll-into-view/-/scroll-into-view-1.12.3.tgz#3a621b469b9577d50cdcadc306cf953d7be80b07" + integrity sha512-fEIN68Gp20hOEnYiErBwj8Zzkc78uj3JG/NnNXgkFo01QmQd+Lzgcn3/GXZVpuUpe85lbNdX+PR2isvWMBYDIg== + scrypt-async@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-1.3.1.tgz#a11fd6fac981b4b823ee01dee0221169500ddae9" @@ -25434,6 +28506,14 @@ scrypt.js@0.2.0: scrypt "^6.0.2" scryptsy "^1.2.1" +scrypt.js@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.1.tgz#cc3f751933d6bac7a4bedf5301d7596e8146cdcd" + integrity sha512-XMoqxwABdotuW+l+qACmJ/h0kVSCgMPZXpbncA/zyBO90z/NnDISzVw+xJ4tUY+X/Hh0EFT269OYHm26VCPgmA== + dependencies: + scrypt "^6.0.2" + scryptsy "^1.2.1" + scrypt.js@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" @@ -25499,16 +28579,16 @@ seed-random@2.2.0: resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ= +seedrandom@2.4.4, seedrandom@^2.4.2: + version "2.4.4" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" + integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== + seedrandom@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== -seedrandom@^2.4.2: - version "2.4.4" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" - integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== - seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -25550,11 +28630,16 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.6.0, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", semver@5.5.0, semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" @@ -25565,12 +28650,7 @@ semver@5.3.0, semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@6.2.0: +semver@6.2.0, semver@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== @@ -25580,7 +28660,22 @@ semver@^4.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^5.0.3, semver@^5.1.0, semver@^5.5: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== + +semver@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + +semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -25715,12 +28810,17 @@ serialize-javascript@1.4.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" integrity sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU= -serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: +serialize-javascript@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== + +serialize-javascript@^1.7.0: version "1.9.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== -serve-static@1.13.2: +serve-static@1.13.2, serve-static@^1.13.1: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== @@ -25730,7 +28830,7 @@ serve-static@1.13.2: parseurl "~1.3.2" send "0.16.2" -serve-static@1.14.1, serve-static@^1.13.1: +serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== @@ -25799,6 +28899,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -25825,7 +28930,7 @@ sha1@^1.1.1: charenc ">= 0.0.1" crypt ">= 0.0.1" -sha3@1.2.3, sha3@^1.2.2: +sha3@1.2.3, sha3@^1.1.0, sha3@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.3.tgz#ed5958fa8331df1b1b8529ca9fdf225a340c5418" integrity sha512-sOWDZi8cDBRkLfWOw18wvJyNblXDHzwMGnRWut8zNNeIeLnmMRO17bjpLc7OzMuj1ASUgx2IyohzUCAl+Kx5vA== @@ -26123,6 +29228,13 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + integrity sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg== + dependencies: + hoek "4.x.x" + snyk-config@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/snyk-config/-/snyk-config-2.2.3.tgz#8e09bb98602ad044954d30a9fc1695ab5b6042fa" @@ -26384,7 +29496,7 @@ socks-proxy-agent@^3.0.1: agent-base "^4.1.0" socks "^1.1.10" -socks-proxy-agent@^4.0.0, socks-proxy-agent@^4.0.1: +socks-proxy-agent@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== @@ -26392,6 +29504,14 @@ socks-proxy-agent@^4.0.0, socks-proxy-agent@^4.0.1: agent-base "~4.2.1" socks "~2.3.2" +socks-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== + dependencies: + agent-base "~4.2.0" + socks "~2.2.0" + socks@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" @@ -26400,6 +29520,14 @@ socks@^1.1.10: ip "^1.1.4" smart-buffer "^1.0.13" +socks@~2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.3.tgz#7399ce11e19b2a997153c983a9ccb6306721f2dc" + integrity sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA== + dependencies: + ip "^1.1.5" + smart-buffer "4.0.2" + socks@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" @@ -26432,7 +29560,7 @@ solc@0.5.0: semver "^5.5.0" yargs "^11.0.0" -solc@0.5.8: +solc@0.5.8, solc@^0.5.0: version "0.5.8" resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.8.tgz#a0aa2714082fc406926f5cb384376d7408080611" integrity sha512-RQ2SlwPBOBSV7ktNQJkvbiQks3t+3V9dsqD014EdstxnJzSxBuOvbt3P5QXpNPYW1DsEmF7dhOaT3JL7yEae/A== @@ -26457,7 +29585,7 @@ solc@^0.4.2: semver "^5.3.0" yargs "^4.7.1" -solc@^0.5.0, solc@^0.5.5, solc@^0.5.8: +solc@^0.5.5: version "0.5.11" resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.11.tgz#5905261191d01befd78ef52610a006820022ee8f" integrity sha512-F8avCCVDYnJzvIm/ITsU11GFNdFI4HaNsME+zw9lK5a3ojD3LZN2Op2cIfWg7w1HeRYRiMOU1dM77saX6jUIKw== @@ -26471,6 +29599,20 @@ solc@^0.5.0, solc@^0.5.5, solc@^0.5.8: tmp "0.0.33" yargs "^13.2.0" +solc@^0.5.8: + version "0.5.10" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.10.tgz#e57d789b1028f3d35f7989e5134d6ddc0e3b32aa" + integrity sha512-Stdrh/MDkopsXYPRzPehTNYuV80Grr2CnQMuFvWj+EeRVbe3piGHxW47KebWn1sGdmK8FLaMfUehccqJP0KovQ== + dependencies: + command-exists "^1.2.8" + fs-extra "^0.30.0" + keccak "^1.0.2" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + yargs "^11.0.0" + solhint@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/solhint/-/solhint-2.0.0.tgz#67aa3499d2427a3a6abe8600f4a920aa9720a83f" @@ -26545,6 +29687,14 @@ source-map-support@0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@0.5.9, source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -26552,7 +29702,15 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0, source-map-support@^0.5.11, source-map-support@^0.5.6, source-map-support@^0.5.7, source-map-support@^0.5.9, source-map-support@~0.5.12, source-map-support@~0.5.9: +source-map-support@^0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" + integrity sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.11, source-map-support@^0.5.7, source-map-support@~0.5.12: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== @@ -26560,6 +29718,22 @@ source-map-support@^0.5.0, source-map-support@^0.5.11, source-map-support@^0.5.6 buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + integrity sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.10, source-map-support@~0.5.9: + version "0.5.11" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.11.tgz#efac2ce0800355d026326a0ca23e162aeac9a4e2" + integrity sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -26770,7 +29944,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.2.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +"statuses@>= 1.2.1 < 2", "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -26830,7 +30004,14 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.4.tgz#73bfd4007b8f677b46ec699f14e9e2304c2f0a9e" + integrity sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA== + dependencies: + stubs "^3.0.0" + +stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -26958,7 +30139,14 @@ string.prototype.trim@^1.1.2, string.prototype.trim@~1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@^1.0.3, string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.0.3, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== @@ -26970,18 +30158,16 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringstream@~0.0.4: version "0.0.6" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== +stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= + strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -26996,7 +30182,14 @@ strip-ansi@^4.0.0, strip-ansi@~4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -27193,7 +30386,15 @@ supertap@^1.0.0: serialize-error "^2.1.0" strip-ansi "^4.0.0" -supertest@^3.2.0, supertest@^3.4.2: +supertest@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.3.0.tgz#79b27bd7d34392974ab33a31fa51a3e23385987e" + integrity sha512-dMQSzYdaZRSANH5LL8kX3UpgK9G1LRh/jnggs/TI0W2Sz7rkMx9Y48uia3K9NgcaWEV28tYkBnXE4tiFC77ygQ== + dependencies: + methods "^1.1.2" + superagent "^3.8.3" + +supertest@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.4.2.tgz#bad7de2e43d60d27c8caeb8ab34a67c8a5f71aad" integrity sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA== @@ -27215,7 +30416,7 @@ supports-color@4.4.0: dependencies: has-flag "^2.0.0" -supports-color@5.4.0: +supports-color@5.4.0, supports-color@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== @@ -27248,7 +30449,7 @@ supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.0.0, supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.0.0, supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -27380,12 +30581,36 @@ tapable@^0.2.7, tapable@~0.2.5: resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" integrity sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI= -tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== + +tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tape@^4.4.0, tape@^4.6.3, tape@^4.8.0: +tape@^4.4.0: + version "4.10.2" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.10.2.tgz#129fcf62f86df92687036a52cce7b8ddcaffd7a6" + integrity sha512-mgl23h7W2yuk3N85FOYrin2OvThTYWdwbk6XQ1pr2PMJieyW2FM/4Bu/+kD/wecb3aZ0Enm+Syinyq467OPq2w== + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.4" + has "~1.0.3" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.6.0" + resolve "~1.10.1" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + +tape@^4.6.3, tape@^4.8.0: version "4.11.0" resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== @@ -27414,7 +30639,7 @@ tar-fs@^1.13.0, tar-fs@^1.15.3, tar-fs@^1.16.2: pump "^1.0.0" tar-stream "^1.1.2" -tar-stream@^1.1.2, tar-stream@^1.5.2, tar-stream@^1.5.4: +tar-stream@^1.1.2, tar-stream@^1.5.4: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== @@ -27427,6 +30652,19 @@ tar-stream@^1.1.2, tar-stream@^1.5.2, tar-stream@^1.5.4: to-buffer "^1.1.1" xtend "^4.0.0" +tar-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.0.tgz#a50efaa7b17760b82c27b3cae4a301a8254a5715" + integrity sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.0.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + tar-stream@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" @@ -27544,7 +30782,21 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terser-webpack-plugin@^1.1.0, terser-webpack-plugin@^1.4.1: +terser-webpack-plugin@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" + integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.16.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser-webpack-plugin@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== @@ -27568,6 +30820,15 @@ terser@3.16.1: source-map "~0.6.1" source-map-support "~0.5.9" +terser@^3.16.1: + version "3.17.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" + integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== + dependencies: + commander "^2.19.0" + source-map "~0.6.1" + source-map-support "~0.5.10" + terser@^4.1.2: version "4.3.2" resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.2.tgz#ed830de484b0103652799063e605618e80f97f93" @@ -27690,7 +30951,15 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" -through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.2, through2@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@^2.0.1, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -27840,7 +31109,7 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-buffer@^1.1.1: +to-buffer@^1.1.0, to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== @@ -27940,7 +31209,14 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.4.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== @@ -27948,13 +31224,6 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - toxic@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toxic/-/toxic-1.0.0.tgz#f1154d8b6ac21875ac943a9f7408df2dfe164ea2" @@ -28091,6 +31360,15 @@ truffle-config@^1.1.10, truffle-config@^1.1.12: truffle-error "^0.0.4" truffle-provider "^0.1.9" +truffle-contract-schema@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-2.0.1.tgz#9bf821d32e26e674ba15eb5d40f96b10b1c9d568" + integrity sha1-m/gh0y4m5nS6FetdQPlrELHJ1Wg= + dependencies: + ajv "^5.1.1" + crypto-js "^3.1.9-1" + debug "^3.1.0" + truffle-contract-schema@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-2.0.2.tgz#9db59e3a5ea85b63dca453a2dba9897c2c3523fd" @@ -28117,7 +31395,18 @@ truffle-contract-sources@^0.1.3: debug "^4.1.0" glob "^7.1.2" -truffle-contract@^3.0.6, truffle-contract@^3.0.7: +truffle-contract@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-3.0.6.tgz#2ef6fc32d7faafa9f4aed8e50001a9fdea342192" + integrity sha1-Lvb8Mtf6r6n0rtjlAAGp/eo0IZI= + dependencies: + ethjs-abi "0.1.8" + truffle-blockchain-utils "^0.0.5" + truffle-contract-schema "^2.0.1" + truffle-error "^0.0.3" + web3 "0.20.6" + +truffle-contract@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-3.0.7.tgz#487b2e1e9c5f01d223148766f6f320ba16bb4f63" integrity sha512-av4MTJDP29PI3oVh8TrvRzRHt+nZJH8ODSiil/TfcXrKMSes52DTA5LHj00siLvcadkxUgoEZfEZ04qqhNGoiA== @@ -28218,7 +31507,12 @@ truffle-provider@^0.1.9: truffle-interface-adapter "^0.1.5" web3 "1.0.0-beta.37" -truffle-provisioner@^0.1.1, truffle-provisioner@^0.1.4: +truffle-provisioner@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/truffle-provisioner/-/truffle-provisioner-0.1.1.tgz#5a8327d62511ef23c950d3aa862610a7c377e2aa" + integrity sha1-WoMn1iUR7yPJUNOqhiYQp8N34qo= + +truffle-provisioner@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/truffle-provisioner/-/truffle-provisioner-0.1.4.tgz#a470f7e603d069b481481dba92f5c9d2f1a8526a" integrity sha512-d4GhAsS4bEtYIfuedaFl9k22o7UJOsmgMZM8M3fQYI0uAGt9ApEGEL0Yvdy7/uWw/0T1796ZVe+EuzlbcjaiUQ== @@ -28330,6 +31624,13 @@ ts-invariant@^0.2.1: dependencies: tslib "^1.9.3" +ts-invariant@^0.4.0, ts-invariant@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + ts-jest@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.1.0.tgz#2eaa813271a2987b7e6c3fefbda196301c131734" @@ -28351,7 +31652,7 @@ ts-log@2.1.4: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.4.tgz#063c5ad1cbab5d49d258d18015963489fb6fb59a" integrity sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ== -ts-node@8.3.0: +ts-node@8.3.0, ts-node@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57" integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== @@ -28362,7 +31663,7 @@ ts-node@8.3.0: source-map-support "^0.5.6" yn "^3.0.0" -ts-node@^8.3.0, ts-node@^8.4.1: +ts-node@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.4.1.tgz#270b0dba16e8723c9fa4f9b4775d3810fd994b4f" integrity sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw== @@ -28396,21 +31697,26 @@ tsconfig-paths@^3.8.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@1.10.0, tslib@^1, tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.1, tslib@^1.9.3: +tslib@1.10.0, tslib@^1, tslib@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@1.9.0: +tslib@1.9.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== -tslib@1.9.3: +tslib@1.9.3, tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslib@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.1.tgz#a5d1f0532a49221c87755cfcc89ca37197242ba7" + integrity sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg== + tslint-config-prettier@^1.18.0: version "1.18.0" resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" @@ -28482,7 +31788,14 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.0.0, tsutils@^3.7.0, tsutils@^3.9.1: +tsutils@^3.0.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" + integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== + dependencies: + tslib "^1.8.1" + +tsutils@^3.7.0, tsutils@^3.9.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== @@ -28586,7 +31899,15 @@ type-fest@^0.8.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.16, type-is@~1.6.16, type-is@~1.6.17, type-is@~1.6.18: +type-is@^1.6.16, type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -28653,7 +31974,17 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@^3.2.2, typescript@^3.5.3, typescript@^3.6.4: +typescript@^3.2.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3.tgz#f1657fc7daa27e1a8930758ace9ae8da31403221" + integrity sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A== + +typescript@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== + +typescript@^3.6.4: version "3.6.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.4.tgz#b18752bb3792bc1a0281335f7f6ebf1bbfc5b91d" integrity sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg== @@ -28685,7 +32016,7 @@ u2f-api@0.2.7: resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== -ua-parser-js@^0.7.18, ua-parser-js@^0.7.19: +ua-parser-js@^0.7.18, ua-parser-js@^0.7.19, ua-parser-js@^0.7.9: version "0.7.20" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== @@ -28846,6 +32177,11 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + unicode-match-property-value-ecmascript@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" @@ -28916,7 +32252,14 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" -unique-filename@^1.1.0, unique-filename@^1.1.1, unique-filename@~1.1.0: +unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= + dependencies: + unique-slug "^2.0.0" + +unique-filename@^1.1.1, unique-filename@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -28986,7 +32329,12 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unorm@^1.3.3, unorm@^1.4.1: +unorm@^1.3.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" + integrity sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA= + +unorm@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== @@ -29009,7 +32357,17 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.0.5, upath@^1.1.1: +upath@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.5.tgz#02cab9ecebe95bbec6d5fc2566325725ab6d1a73" + integrity sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww== + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -29056,6 +32414,13 @@ upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= +uri-js@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" + integrity sha1-+QuFhQf4HepNz7s8TD2/orVX+qo= + dependencies: + punycode "^2.1.0" + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -29255,7 +32620,7 @@ uuid@2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= -uuid@3.3.2: +uuid@3.3.2, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== @@ -29265,7 +32630,12 @@ uuid@^2.0.1, uuid@^2.0.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== + +uuid@^3.2.1: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== @@ -29292,7 +32662,15 @@ valid-url@1.0.9, valid-url@^1, valid-url@^1.0.9: resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3, validate-npm-package-license@~3.0.1: +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + integrity sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-license@^3.0.3, validate-npm-package-license@~3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -29391,6 +32769,13 @@ vlq@^1.0.0: resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + dependencies: + indexof "0.0.1" + vm-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.0.1.tgz#a15d7762c4c48fa6bf9f3309a21340f00ed23063" @@ -29484,6 +32869,15 @@ weak-map@^1.0.5: resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb" integrity sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes= +web3-bzz@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.35.tgz#9d5e1362b3db2afd77d65619b7cd46dd5845c192" + integrity sha512-BhAU0qhlr8zltm4gs/+P1gki2VkxHJaM2Rrh4DGesDW0lzwufRoNvWFlwx1bKHoFPWNbSmm9PRkHOYOINL/Tgw== + dependencies: + got "7.1.0" + swarm-js "0.1.37" + underscore "1.8.3" + web3-bzz@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" @@ -29502,6 +32896,15 @@ web3-bzz@1.2.1: swarm-js "0.1.39" underscore "1.9.1" +web3-core-helpers@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.35.tgz#d681d218a0c6e3283ee1f99a078ab9d3eef037f1" + integrity sha512-APOu3sEsamyqWt//8o4yq9KF25/uqGm+pQShson/sC4gKzmfJB07fLo2ond0X30E8fIqAPeVCotPXQxGciGUmA== + dependencies: + underscore "1.8.3" + web3-eth-iban "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core-helpers@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" @@ -29531,6 +32934,17 @@ web3-core-helpers@1.2.1: web3-eth-iban "1.2.1" web3-utils "1.2.1" +web3-core-method@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.35.tgz#fc10e2d546cf4886038e6130bd5726b0952a4e5f" + integrity sha512-jidImCide8q0GpfsO4L73qoHrbkeWgwU3uOH5DKtJtv0ccmG086knNMRgryb/o9ZgetDWLmDEsJnHjBSoIwcbA== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core-method@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" @@ -29567,6 +32981,14 @@ web3-core-method@1.2.1: web3-core-subscriptions "1.2.1" web3-utils "1.2.1" +web3-core-promievent@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.35.tgz#4f1b24737520fa423fee3afee110fbe82bcb8691" + integrity sha512-GvqXqKq07OmHuVi5uNRg6k79a1/CI0ViCC+EtNv4CORHtDRmYEt5Bvdv6z6FJEiaaQkD0lKbFwNhLxutx7HItw== + dependencies: + any-promise "1.3.0" + eventemitter3 "1.1.1" + web3-core-promievent@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" @@ -29583,6 +33005,17 @@ web3-core-promievent@1.2.1: any-promise "1.3.0" eventemitter3 "3.1.2" +web3-core-requestmanager@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.35.tgz#2b77cbf6303720ad68899b39fa7f584dc03dbc8f" + integrity sha512-S+zW2h17ZZQU9oe3yaCJE0E7aJS4C3Kf4kGPDv+nXjW0gKhQQhgVhw1Doq/aYQGqNSWJp7f1VHkz5gQWwg6RRg== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-providers-http "1.0.0-beta.35" + web3-providers-ipc "1.0.0-beta.35" + web3-providers-ws "1.0.0-beta.35" + web3-core-requestmanager@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" @@ -29605,6 +33038,15 @@ web3-core-requestmanager@1.2.1: web3-providers-ipc "1.2.1" web3-providers-ws "1.2.1" +web3-core-subscriptions@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.35.tgz#c1b76a2ad3c6e80f5d40b8ba560f01e0f4628758" + integrity sha512-gXzLrWvcGkGiWq1y33Z4Y80XI8XMrwowiQJkrPSjQ81K5PBKquOGwcMffLaKcwdmEy/NpsOXDeFo3eLE1Ghvvw== + dependencies: + eventemitter3 "1.1.1" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-core-subscriptions@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" @@ -29632,6 +33074,16 @@ web3-core-subscriptions@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" +web3-core@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.35.tgz#0c44d3c50d23219b0b1531d145607a9bc7cd4b4f" + integrity sha512-ayGavbgVk4KL9Y88Uv411fBJ0SVgVfKhKEBweKYzmP0zOqneMzWt6YsyD1n6kRvjAbqA0AfUPEOKyMNjcx2tjw== + dependencies: + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-requestmanager "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" @@ -29665,6 +33117,16 @@ web3-core@1.2.1: web3-core-requestmanager "1.2.1" web3-utils "1.2.1" +web3-eth-abi@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.35.tgz#2eb9c1c7c7233db04010defcb192293e0db250e6" + integrity sha512-KUDC+EtFFYG8z01ZleKrASdjj327/rtWHzEt6RWsEj7bBa0bGp9nEh+nqdZx/Sdgz1O8tnfFzJlrRcXpfr1vGg== + dependencies: + bn.js "4.11.6" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-abi@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" @@ -29683,6 +33145,22 @@ web3-eth-abi@1.2.1, web3-eth-abi@^1.0.0-beta.24: underscore "1.9.1" web3-utils "1.2.1" +web3-eth-accounts@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.35.tgz#7d0e5a69f510dc93874471599eb7abfa9ddf3e63" + integrity sha512-duIgRsfht/0kAW/eQ0X9lKtVIykbETrnM2H7EnvplCzPHtQLodpib4o9JXfh9n6ZDgdDC7cuJoiVB9QJg089ew== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scrypt.js "0.2.0" + underscore "1.8.3" + uuid "2.0.1" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-accounts@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" @@ -29729,6 +33207,20 @@ web3-eth-admin@1.0.0-beta.55: web3-providers "1.0.0-beta.55" web3-utils "1.0.0-beta.55" +web3-eth-contract@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.35.tgz#5276242d8a3358d9f1ce92b71575c74f9015935c" + integrity sha512-foPohOg5O1UCGKGZOIs+kQK5IZdV2QQ7pAWwNxH8WHplUA+fre1MurXNpoxknUmH6mYplFhXjqgYq2MsrBpHrA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-contract@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" @@ -29785,6 +33277,14 @@ web3-eth-ens@1.2.1: web3-eth-contract "1.2.1" web3-utils "1.2.1" +web3-eth-iban@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.35.tgz#5aa10327a9abb26bcfc4ba79d7bad18a002b332c" + integrity sha512-H5wkcNcAIc+h/WoDIKv7ZYmrM2Xqu3O7jBQl1IWo73EDVQji+AoB2i3J8tuwI1yZRInRwrfpI3Zuwuf54hXHmQ== + dependencies: + bn.js "4.11.6" + web3-utils "1.0.0-beta.35" + web3-eth-iban@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" @@ -29810,6 +33310,17 @@ web3-eth-iban@1.2.1: bn.js "4.11.8" web3-utils "1.2.1" +web3-eth-personal@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.35.tgz#ecac95b7a53d04a567447062d5cae5f49879e89f" + integrity sha512-AcM9nnlxu7ZRRxPvkrFB9eLxMM4A2cPfj2aCg21Wb2EpMnhR+b/O1cT33k7ApRowoMpM+T9M8vx2oPNwXfaCOQ== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-personal@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" @@ -29832,6 +33343,24 @@ web3-eth-personal@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" +web3-eth@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.35.tgz#c52c804afb95e6624b6f5e72a9af90fbf5005b68" + integrity sha512-04mcb2nGPXThawuuYICPOxv0xOHofvQKsjZeIq+89nyOC8DQMGTAErDkGyMHQYtjpth5XDhic0wuEsA80AmFZA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-eth-accounts "1.0.0-beta.35" + web3-eth-contract "1.0.0-beta.35" + web3-eth-iban "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" @@ -29870,6 +33399,15 @@ web3-eth@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" +web3-net@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.35.tgz#5c6688e0dea71fcd910ee9dc5437b94b7f6b3354" + integrity sha512-bbwaQ/KohGjIJ6HAKbZ6KrklCAaG6/B7hIbAbVLSFLxF+Yz9lmAgQYaDInpidpC/NLb3WOmcbRF+P77J4qMVIA== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-net@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" @@ -29928,6 +33466,32 @@ web3-provider-engine@14.0.6: xhr "^2.2.0" xtend "^4.0.1" +web3-provider-engine@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.1.0.tgz#91590020f8b8c1b65846321310cbfdb039090fc6" + integrity sha512-vGZtqhSUzGTiMGhJXNnB/aRDlrPZLhLnBZ2NPArkZtr8XSrwg9m08tw4+PuWg5za0TJuoE/vuPQc501HddZZWw== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^3.0.0" + eth-json-rpc-infura "^3.1.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + web3-provider-engine@14.2.0: version "14.2.0" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.0.tgz#2efec157b2c429c5c674c079aea96b0a06de8b3d" @@ -30002,6 +33566,14 @@ web3-provider-engine@^8.4.0: xhr "^2.2.0" xtend "^4.0.1" +web3-providers-http@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.35.tgz#92059d9d6de6e9f82f4fae30b743efd841afc1e1" + integrity sha512-DcIMFq52Fb08UpWyZ3ZlES6NsNqJnco4hBS/Ej6eOcASfuUayPI+GLkYVZsnF3cBYqlH+DOKuArcKSuIxK7jIA== + dependencies: + web3-core-helpers "1.0.0-beta.35" + xhr2-cookies "1.1.0" + web3-providers-http@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" @@ -30018,6 +33590,15 @@ web3-providers-http@1.2.1: web3-core-helpers "1.2.1" xhr2-cookies "1.1.0" +web3-providers-ipc@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.35.tgz#031afeb10fade2ebb0ef2fb82f5e58c04be842d9" + integrity sha512-iB0FG0HcpUnayfa8pn4guqEQ4Y1nrroi/jffdtQgFkrNt0sD3fMSwwC0AbmECqj3tDLl0e1slBR0RENll+ZF0g== + dependencies: + oboe "2.1.3" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-providers-ipc@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" @@ -30036,6 +33617,15 @@ web3-providers-ipc@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" +web3-providers-ws@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.35.tgz#5d38603fd450243a26aae0ff7f680644e77fa240" + integrity sha512-Cx64NgDStynKaUGDIIOfaCd0fZusL8h5avKTkdTjUu2aHhFJhZoVBGVLhoDtUaqZGWIZGcBJOoVf2JkGUOjDRQ== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + web3-providers-ws@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" @@ -30071,6 +33661,16 @@ web3-providers@1.0.0-beta.55: websocket "^1.0.28" xhr2-cookies "1.1.0" +web3-shh@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.35.tgz#7e4a585f8beee0c1927390937c6537748a5d1a58" + integrity sha512-8qSonk/x0xabERS9Sr6AIADN/Ty+5KwARkkGIfSYHKqFpdMDz+76F7cUCxtoCZoS8K04xgZlDKYe0TJXLYA0Fw== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-shh@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" @@ -30091,6 +33691,19 @@ web3-shh@1.2.1: web3-core-subscriptions "1.2.1" web3-net "1.2.1" +web3-utils@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.35.tgz#ced9e1df47c65581c441c5f2af76b05a37a273d7" + integrity sha512-Dq6f0SOKj3BDFRgOPnE6ALbzBDCKVIW8mKWVf7tGVhTDHf+wQaWwQSC3aArFSqdExB75BPBPyDpuMTNszhljpA== + dependencies: + bn.js "4.11.6" + eth-lib "0.1.27" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.8.3" + utf8 "2.1.1" + web3-utils@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" @@ -30104,7 +33717,7 @@ web3-utils@1.0.0-beta.37: underscore "1.8.3" utf8 "2.1.1" -web3-utils@1.0.0-beta.55: +web3-utils@1.0.0-beta.55, web3-utils@^1.0.0-beta.37: version "1.0.0-beta.55" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" integrity sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg== @@ -30120,7 +33733,7 @@ web3-utils@1.0.0-beta.55: randombytes "^2.1.0" utf8 "2.1.1" -web3-utils@1.2.1, web3-utils@^1.0.0-beta.37: +web3-utils@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== @@ -30155,6 +33768,19 @@ web3@0.20.6: xhr2 "*" xmlhttprequest "*" +web3@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.35.tgz#6475095bd451a96e50a32b997ddee82279292f11" + integrity sha512-xwDmUhvTcHQvvNnOPcPZZgCxKUsI2e+GbHy7JkTK3/Rmnutazy8x7fsAXT9myw7V1qpi3GgLoZ3fkglSUbg1Mg== + dependencies: + web3-bzz "1.0.0-beta.35" + web3-core "1.0.0-beta.35" + web3-eth "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-shh "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" @@ -30259,7 +33885,7 @@ webpack-merge@^4.1.0: dependencies: lodash "^4.17.5" -webpack-sources@1.3.0: +webpack-sources@1.3.0, webpack-sources@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== @@ -30267,7 +33893,15 @@ webpack-sources@1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + integrity sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -30404,7 +34038,17 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -websocket@1.0.29, websocket@^1.0.28: +websocket@1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.26.tgz#a03a01299849c35268c83044aa919c6374be8194" + integrity sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw== + dependencies: + debug "^2.2.0" + nan "^2.3.3" + typedarray-to-buffer "^3.1.2" + yaeti "^0.0.6" + +websocket@1.0.29: version "1.0.29" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== @@ -30415,6 +34059,16 @@ websocket@1.0.29, websocket@^1.0.28: typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" +websocket@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" + integrity sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA== + dependencies: + debug "^2.2.0" + nan "^2.11.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" + "websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": version "1.0.26" resolved "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" @@ -30430,7 +34084,6 @@ websocket@1.0.29, websocket@^1.0.28: dependencies: debug "^2.2.0" es5-ext "^0.10.50" - gulp "^4.0.2" nan "^2.14.0" typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" @@ -30495,7 +34148,14 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@1, which@1.3.1, which@^1.1.1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.12, which@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== + dependencies: + isexe "^2.0.0" + +which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -30509,13 +34169,20 @@ which@~1.2.11, which@~1.2.14: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w== + dependencies: + string-width "^1.0.2" + widest-line@^2.0.0, widest-line@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -30628,7 +34295,14 @@ worker-farm@1.5.2: errno "^0.1.4" xtend "^4.0.1" -worker-farm@^1.5.2, worker-farm@^1.7.0: +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== + dependencies: + errno "~0.1.7" + +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -30700,7 +34374,16 @@ write-file-atomic@^1.1.2, write-file-atomic@^1.1.4, write-file-atomic@^1.2.0: imurmurhash "^0.1.4" slide "^1.1.5" -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== @@ -30895,7 +34578,17 @@ xhr@2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: +xhr@^2.0.4, xhr@^2.3.3: + version "2.4.1" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.1.tgz#ba982cced205ae5eec387169ac9dc77ca4853d38" + integrity sha512-pAIU5vBr9Hiy5cpFIbPnwf0C18ZF86DBsZKrlsf87N5De/JbA6RJ83UP/cv+aljl4S40iRVMqP4pr4sF9Dnj0A== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xhr@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== @@ -30960,11 +34653,21 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + +"xtend@>=4.0.0 <4.1.0-0": version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" @@ -30997,12 +34700,17 @@ yallist@^2.0.0, yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= + +yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@10.1.0, yargs-parser@10.x: +yargs-parser@10.1.0, yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== @@ -31077,7 +34785,7 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs@11.1.0, yargs@^11.0.0: +yargs@11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== @@ -31095,7 +34803,7 @@ yargs@11.1.0, yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@13.2.4: +yargs@13.2.4, yargs@^13.0.0: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== @@ -31112,7 +34820,7 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@13.3.0, yargs@^13.0.0, yargs@^13.1.0, yargs@^13.2.0, yargs@^13.3.0: +yargs@13.3.0, yargs@^13.1.0, yargs@^13.2.0, yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== @@ -31163,7 +34871,43 @@ yargs@^10.0.3: y18n "^3.2.1" yargs-parser "^8.1.0" -yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + integrity sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + +yargs@^12.0.1: + version "12.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== + dependencies: + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" + +yargs@^12.0.2, yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== From 3e40cca474024488bc525aaa5c85b38af1683f5a Mon Sep 17 00:00:00 2001 From: Jean Regisser <jean.regisser@gmail.com> Date: Wed, 27 Nov 2019 20:07:49 +0100 Subject: [PATCH 13/13] Fix celotool expected cluster check (#1932) --- packages/celotool/src/lib/cluster.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/celotool/src/lib/cluster.ts b/packages/celotool/src/lib/cluster.ts index 79d6130f5ad..c342b7bd918 100644 --- a/packages/celotool/src/lib/cluster.ts +++ b/packages/celotool/src/lib/cluster.ts @@ -38,7 +38,7 @@ export async function switchToClusterFromEnv(checkOrPromptIfStagingOrProduction const kubernetesClusterName = fetchEnv(envVar.KUBERNETES_CLUSTER_NAME) const kubernetesClusterZone = fetchEnv(envVar.KUBERNETES_CLUSTER_ZONE) - const expectedCluster = `gke_${projectName}_${kubernetesClusterName}_${kubernetesClusterName}` + const expectedCluster = `gke_${projectName}_${kubernetesClusterZone}_${kubernetesClusterName}` if (currentCluster === null || currentCluster.trim() !== expectedCluster) { await execCmdWithExitOnFailure(